Spark Streaming viene con un conjunto de métodos que facilitan el procesamiento de datos. Hay operaciones que son compatibles con RDD como : map , flatMap ,filter , count , reduce , groupByKey , reduceByKey , sortByKey y join. A la vez provee un conjunto de métodos basados en ventanas y operaciones stateful como : window , countByWindow , reduceByWindow , countByValueAndWindow , reduceByKeyAndWindow y updateStateByKey.
Spark streaming soporta a scala, java y python.
Vamos a ver los pasos típicos para hacer una aplicación con Spark Streaming:
El primer paso es generar el contexto el cual tiene 2 parámetros en el constructor. Uno es el contexto de spark (que lo tenemos) y el otro es el sliding-interval time, este intervalo es el intervalo en el cual los datos van a ser actualizados, es decir es estamos definiendo en que intervalo se van a buscar los datos. Una vez que se inicializa el contexto, no se pueden definir ni agregar nuevos cálculos al contexto existente. Además, solo un objeto StreamingContext puede estar activo en cualquier momento.
Luego tenemos que definir el origen de datos de entrada esto lo hacemos definiendo un DStream de entrada.
Teniendo el origen de datos definimos los cálculos que se realizarán en la entrada DStream utilizando la API de transformaciones Spark Streaming.
Después de definir la lógica de cómputo de transmisión, podemos comenzar a recibir los datos y procesarlos usando el método de inicio en el objeto StreamingContext.
Finalmente, esperamos que el proceso de transmisión de datos se detenga utilizando el método awaitTermination del objeto StreamingContext.