¿Cómo implementar Pandas en Apache Beam? No puedo realizar la combinación izquierda en varias columnas y Pcollections no admite consultas SQL. Incluso el documento de Apache Beam no está enmarcado correctamente. Revisé pero no pude encontrar ningún tipo de implementación de Panda en Apache Beam. ¿Alguien puede dirigirme al enlace deseado?

3
Nagesh Singh Chauhan 15 feb. 2018 a las 15:00

2 respuestas

La mejor respuesta

Hay algo de confusión aquí.

pandas es "compatible", en el sentido de que puede usar la biblioteca pandas de la misma manera que la usaría sin Apache Beam, y de la misma manera que puede usar cualquier otra biblioteca de su Beam canalización siempre que especifique las dependencias adecuadas. También es "compatible" en el sentido de que se incluye como una dependencia de forma predeterminada, por lo que no tiene que especificarlo usted mismo. Por ejemplo, puede escribir un DoFn que realiza algunos cálculos usando pandas para cada elemento; un cálculo separado para cada elemento, realizado por Beam en paralelo sobre todos los elementos.

no es compatible en el sentido de que Apache Beam actualmente no proporciona una integración especial con él, p. Ej. no puedes usar un PCollection como un marco de datos de pandas, o viceversa. Un PCollection no contiene físicamente ningún dato (esto debería ser particularmente claro para las canalizaciones de transmisión) - es solo un nodo marcador de posición en el plan de ejecución de Beam.

Dicho esto, una API similar a pandas para trabajar con Beam PCollections sin duda sería una buena idea y simplificaría el aprendizaje de Beam para muchos usuarios de pandas existentes, pero no creo que nadie está trabajando para implementar esto actualmente. Sin embargo, la comunidad de Beam está discutiendo actualmente la idea de agregar esquemas a PCollections, lo cual es un paso en esta dirección.

9
jkff 17 feb. 2018 a las 03:48

pandas es compatible con el SDK de Dataflow para Python 2.x. Al momento de escribir, los trabajadores tienen la versión pandas v0.18.1 preinstalada, por lo que no debería tener ningún problema con eso. StackOverflow no acepta respuestas en las que solicita a la comunidad que lo dirija a documentación externa y / o tutoriales, por lo que tal vez primero debería probar una implementación usted mismo y luego regresar con más información sobre lo que está fallando o no y lo que hizo. lograr antes de tropezar con un error.

En cualquier caso, si lo que desea lograr es una combinación izquierda, tal vez también pueda echar un vistazo al tipo de transformación CoGroupByKey, que está documentado en Documentación de Apache Beam. Se utiliza para realizar uniones relacionales de varios PCollection s con un tipo de clave común. En esa misma página, podrá encontrar algunos ejemplos, que usan CoGroupByKey y ParDo para unir el contenido de varios objetos de datos.

1
Vikram Tiwari 20 mar. 2018 a las 07:08