Cómo crear grupos de elementos N desde una PCollection Apache Beam Python
Estoy tratando de lograr algo como esto:Batch PCollection en Beam / Dataflow
La respuesta en el enlace anterior está en Java, mientras que el lenguaje con el que estoy trabajando es Python. Por lo tanto, necesito ayuda para obtener una construcción similar.
Específicamente tengo esto:
p = beam.Pipeline (options = pipeline_options)
lines = p | 'File reading' >> ReadFromText (known_args.input)
Después de esto, necesito crear otroPCollection
pero con unList
de N filas de "líneas" ya que mi caso de uso requiere un grupo de filas. No puedo operar línea por línea.
Probé unParDo
Función que utiliza variables para el recuento asociado con el contador N filas y despuésgroupBy
utilizandoMap
. Pero estos se restablecen cada 1000 registros, por lo que no es la solución que estoy buscando. Leí el ejemplo en el enlace, pero no sé cómo hacer algo así en Python.
Intenté guardar los contadores en Datastore, sin embargo, la diferencia de velocidad entre la lectura y la escritura de Dataflow con Datastore es bastante significativa.
¿Cuál es la forma correcta de hacer esto? No sé cómo más abordarlo. Saludos.