Scala es un lenguaje funcional, orientado a objetos y multiplataforma que corre actualmente sobre la Maquina Virtual de Java. Por otro lado destacar la gran ventaja de integrar sin problemas bibliotecas desarrolladas en otros lenguajes de programación.
Una vez definidas las características principales del lenguaje de programación, se muestra el tutorial de Scala, donde se puede ver multitud de ejemplos simples:
Preparación del entorno de desarrollo.
- Databrinks: entorno online sencillo que no necesita instalación.
- IntelliJ Idea: entorno de desarrollo. Ejemplo de configurar una aplicación Spark Scala mediante Maven
- IntelliJ Idea + Hortonworks: Ejecución distribuida de Spark Scala mediante SBT
Conceptos básicos
- Condicionales y bucles if, for, foreach, yield, while
- Funciones def
Conectar con Scala al HDFS
Formato y Compresión de HDFS
- Formatos: Textfile, Sequence File, Parquet, Avro o ORC
- Compresión: snappy, gzip, deflate, bzip2 o zlib
Estructuras de datos
LISTAS
- Crear listas: List(), 1::2::3::Nil
- Recorrer listas: for, foreach
- Unir listas: concat(list1,list2), ++, :::
- Filtrar elementos: .filter( _ > 2 )
- Añadir elementos: ::
- Cálculo de media móvil SMA: .sliding(3).map
DATASETS
- Crear dataset: spark.createdataset()
- Tranformar dataset: toDS()
DATAFRAMES
- Variable que genera el contexto: val spark = SparkSession.builder().appName(“MiApp”).master(“local”).getOrCreate()
- Crear dataframe: spark.createdataframe()
- Tranformar datafame: toDF()
Transformaciones de Dataframes
- Filtros: filter, distinct
- Agrupar elementos: groupBy
- Ordenar elementos: sort, orderBy
- Unir tablas: join, inner_join, reft_outer, right_outer, union
- Añadir columnas: withColumn
- Calculos en ventana temporal
- Media movil simple: rowsBetween(-1, 1)
- Suma acumulativa: rowsBetween(Long.MinValue, 0), sum
- Valor previo: lag()
- Ranking: rank()
Acciones de Dataframes
- Mostrar: show, describe
- Contar elementos: count
- Funciones estadísticas: avg, sum, max, min, agg, stat.corr, stat.cov
SPARK SQL
- Lectura y estritura: createOrReplaceTempView
- Selección, filtros: select, count, where, distinct, in
- Agrupar elementos: group by
- Ordenar elementos: order by
- Unir tablas: inner join, left outer, right outer
RDDs
Lectura y escritura en HDFS
- Definir configuración: val conf = new SparkConf().setAppName(«MiApp»).setMaster(«local»)
Variable que genera el contexto: val sc = new SparkContext(conf) - Lectura: sc.textFile
- Escritura: saveAsTextFile
Transformaciones de RDDs
- Mapeo: map, flatmap, mapPartitions, mapPartitionsWithIndex
- Filtros: filter, distint
- Unión e interseción: union, intersection
- Selección de partes: sample, sampleByKey
- Agrupar elementos: groupByKey, reduceByKey
- Ordenar elementos: orderByKey
- Producto cartesiano: cartesian
- Reparticionado: pipe, coalesce, repartition, repartition
Acciones de RDDs
- Mostrar: collect
- Reducir. reduce, foreach
- Contar: count, countByKey
- Seleccionar una parte: first, top, take, takeSample, takeOrdered, max, min
- Guardar: saveAsTextFile, saveAsSequenceFile, saveAsObjectFile
Otras estructuras
- Arrays
- Vectores – Vectors
- Filas – Row
- Diccionarios – Maps
- Tuplas – Tuples
- Opciones – Options
- Iteradores – Iterators
Procesamiento de datos
- Batch o procesamiento por lotes.
- Streaming o procesamiento en tiempo real.
Machine learning
ElasticSearch
- Escribir datos tipo Seq en Elastic
- Escribir datos tipo Dataframe en Elastic
- Escribir en elastic con seguridad Searchguard
Otros
Fuente: Databricks.com
0 comentarios