Spark Structured Streaming - Procesando cada fila

Estoy usando transmisión estructurada con Spark 2.1.1. Necesito aplicar algo de lógica empresarial a los mensajes entrantes (de la fuente Kafka).

esencialmente, necesito recoger el mensaje, obtener algunos valores clave, buscarlos en HBase y realizar una lógica de biz más en el conjunto de datos. El resultado final es un mensaje de cadena que debe escribirse en otra cola Kafka.

Sin embargo, dado que la abstracción para los mensajes entrantes es un marco de datos (tabla sin límites - transmisión estructurada), tengo que iterar a través del conjunto de datos recibido durante un disparo a través demapPartitions (particiones debido a que el cliente HBase no es serializable).

Durante mi proceso, necesito iterar a través de cada fila para ejecutar el proceso de negocio para el mismo.

¿Existe un mejor enfoque posible que pueda ayudarme a evitardataFrame.mapPartitions ¿llamada? ¡Siento que es secuencial e iterativo!La transmisión estructurada básicamente me obliga a generar un marco de datos de salida de mi proceso comercial, mientras que no hay ninguno para empezar. ¿Qué otro patrón de diseño puedo usar para lograr mi objetivo final?

¿Recomendarías un enfoque alternativo?

Respuestas a la pregunta(1)

Su respuesta a la pregunta