PySpark: Spark with Python
Características Apache Spark framework
Distributed cluster computing framework
Eficiencia en cálculo para largos datasets in-memory
Procesamiento de datos ultarápido.
Soporte para Java, Scala, Python, R and SQL
Computo Paralelo con grandes datasets
Optimizado para Big Data
Apache Spark Componentes
Modos de Despliegue con Spark
Modo Local : Equipos individuales como una laptop
Local model convenient for testing, debugging and demonstration
Modo Cluster : Equipos para producción
Grupo de computadora conectadas como una gran
computadora para incrementar el rendimientos
Machine Learning. MLlib
Spark permite a las personas crear e
implementar aplicaciones de aprendizaje
automático escalables mucho más rápido de
lo que lo habían hecho anteriormente. [¿Por
qué?] Su flexibilidad y facilidad de
programación significaba que podía crear
aplicaciones de aprendizaje automático,
entrenar modelos con datos masivos muy,
muy rápidamente. Eso ha generado un gran
interés en el ecosistema ---- Mike Olson
(Cofundador de Cloudera)
PySpark: Spark with
Python
B IG DATA F U N DA M E N TA L S W ITH P
Y S PA R K
Upendra Devisetty
Science Analyst,
CyVerse
Resumen de PySpark
Apache Spark desarrollado en Scala
Soporta Python con Spark,
Velocidad y poder de cálculo similar a Scala
La API de PySpark APIs es similar a Pandas y Scikit-learn
Comprendiendo SparkContext
SparkContext es el punto de entrada para usar Spark
Un punto de entrada es una conexión a un cluster Spark cluster
Es como la llave de una casa
PySpark tiene un contexto por defecto : sc
Introducción a
PySpark DataFrames
Upendra Devisetty
Science Analyst, CyVerse
Que es PySpark DataFrames?
PySpark SQL is una Spark
PySpark DataFrame colección de datos distribuidos con nombres de columnas.
Diseñado para el procesamiento de datos estructurados (e.g relational database) y semi-estructured data (e.g
JSON)
Dataframe API disponible en Python, R, Scala, and Java
DataFrames en PySpark soportan consultas SQL ( SELECT * from table ) or métodos ([Link]() )
SparkSession - Entry point for DataFrame API
SparkContext is laentradaprincipal para crear RDDs
SparkSession proporciona un punto simple de entrada para interactuar con Spark DataFrames SparkSession is usado para
crear DataFrame, registrar DataFrames, ejecutar SQL queries
SparkSession está disponiblecomo PySpark: spark
Creando DataFrames en PySpark
Dos métodos
From existing RDDs using SparkSession's createDataFrame() method
From various data sources (CSV, JSON, TXT) using SparkSession's read method Schema
controls the data and helps DataFrames to optimize queries
El Schema muestra información : nombre column name, tipo de data, valores vacíos etc.,
Creando un DataFrame desde RDD
iphones_RDD = [Link]([
("XS", 2018, 5.65, 2.79, 6.24),
("XR", 2018, 5.94, 2.98, 6.84),
("X10", 2017, 5.65, 2.79, 6.13),
("8Plus", 2017, 6.23, 3.07, 7.12)
])
names = ['Model', 'Year', 'Height', 'Width', 'Weight']
iphones_df = [Link](iphones_RDD, schema=names)
type(iphones_df)
[Link]
Creando DataFrame desde un
CSV/JSON/TXT
df_csv = [Link]("[Link]", header=True, inferSchema=True)
df_json = [Link]("[Link]", header=True, inferSchema=True)
df_txt = [Link]("[Link]", header=True, inferSchema=True)
Path :considerarutadelarchivodedatos
Hay otros 2 parámetros opcionales
header=True inferSchema=True
,
DataFrames usando
PySpark SQL
Upendra Devisetty
Science Analyst, CyVerse
DataFrame API vs SQL queries
In PySpark puede trabajar con SparkSQL para DataFrame conla API de SQL queries
Las operaioness con DataFrames puede ser usadas con SQL queries
Ejecutando SQL Queries
SparkSession sql() ejecuta SQL query
Ejemplos
[Link]("table1")
df2 = [Link]("SELECT field1, field2 FROM
table1") [Link]()
[Row(f1=1, f2='row1'), Row(f1=2, f2='row2'), Row(f1=3,
f2='row3')]
SQL query
test_df.createOrReplaceTempView("test_table")
query = '''SELECT Product_ID FROM test_table'''
test_product_df = [Link](query)
test_product_df.show(5)
+----------+
|Product_ID|
+----------+
| P00069042|
| P00248942|
| P00087842|
| P00085442|
| P00285442|
+----------+
Sumarizando datos con SQL queries
test_df.createOrReplaceTempView("test_table")
query = '''SELECT Age, max(Purchase) FROM test_table GROUP BY Age'''
[Link](query).show(5)
+-----+-------------+
| Age|max(Purchase)|
+-----+-------------+
|18-25| 23958|
|26-35| 23961|
| 0-17| 23955|
|46-50| 23960|
|51-55| 23960|
+-----+-------------+
only showing top 5 rows
Filtrando columns usando SQL queries
test_df.createOrReplaceTempView("test_table")
query = '''SELECT Age, Purchase, Gender FROM table1 WHERE Purchase > 20000 AND Gender == "F"'''
[Link](query).show(5)
+-----+--------+------+
| Age|Purchase|Gender|
+-----+--------+------+
|36-45| 23792| F|
|26-35| 21002| F|
|26-35| 23595| F|
|26-35| 23341| F|
|46-50| 20771| F|
+-----+--------+------+
only showing top 5 rows
Demo…