Expone la API de Spark (en Scala) desde R.
Spark permite acceder al ecosistema Hadoop.
Simplemente, sintaxis dplyr!.
Creado por Rstudio en 2016.
Lectura y escritura de datos a gran escala, por:
“hadoop distributed filesystem”
Distinto a NTFS, FAT, Ext3…
Optimizado para ficheros de >100 Mb.
“lectura secuencial de archivos… pero, cómo?”
Resilient Distributed Database.
Formato de archivo básico para HDFS.
Compuesto de bloques, duplicados en varios nodos.
Se recuperan en caso de pérdida de algún nodo.
Base de los dataframes utilizados por sparklyr.
Bloques de 128 Mb.
Se replican por defecto 3 veces en distintos nodos.
NameNode es el árbol de directorios y metadatos:
Los datos van a donde está el programa (MSExcel).
El paradigma del Big Data: el programa va a donde se hallan los datos (Spark).
# Spark context: local (for 'low memory' tasks only!)
sc <- spark_connect(master = "local",
spark_home = "/usr/hdp/2.4.2.0-258/spark")
# Spark context: yarn (for loading bigger datasets)
sc <- spark_connect(master = "yarn-client",
spark_home = "/usr/hdp/2.4.2.0-258/spark")
Desde la consola CESGA podemos acceder a dos sistemas de almacenamiento de ficheros:
Driver: donde está instalado el programa que conecta con Spark, que traduce las funciones de sparklyr.
Master: lanza las operaciones (local, client, cluster).
YARN maneja los recursos que pide Spark.
Los Executors realizan las operaciones con los archivos.
Concepto introducido por Google en 2004.
Puesto en práctica con Apache-Hadoop.
Map
Reduce
Concepto introducido por Google en 2004.
Puesto en práctica con Apache-Hadoop.
apply()
summarise()
Map – apply()
Filter – filter() group_by()
Reduce – count() summarise()
Collect – collect()
collect desencadena la ejecución de todas las operaciones previas, y descarga los datos al $HOME NFS.
Spark = ‘Lazy evaluation’.
Datos municipales
compostela %>%
filter(superficie_servicios > superficie_construida * 0.5) %>%
head(6) %>%
collect()
compostela %>%
group_by(distrito, barrio) %>%
summarise(max_num_habitantes = max(num_habitantes),
media_num_parcelas = mean(num_parcelas),
total_num_viviendas = sum(num_viviendas)) %>%
head(4) %>%
collect()
Opiniones de libros en Amazon
Github: github.com/aurora-mareviv
Tutorial sparklyr del CESGA: /sparklyr_start
Web UI CESGA: hadoop.cesga.es
Carlos Gil Bellosta (datanalytics.com) @gilbellosta
Comunidad de Usuarios de R de Galicia.
Another Jupyter notebook for interactive data exploration & modelling with a -much- bigger dataset.
Visualize it in nbviewer.jupyter.org
spark-submit --deploy-mode client sparklyr_script.R
git clone https://github.com/aurora-mareviv/sparklyr_test
git clone https://github.com/aurora-mareviv/sparklyr_start