es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Pyspark transforma cada fila de un dataframe en múltiples filas.

Soy un traductor de español que traduce documentos de IT. Traduzca lo siguiente al español. No traduzca el código ni la salida en formato Markdown.

Soy nuevo en Apache Spark y estoy luchando por hacer algo que parece simple.

En Snowflake tienen el concepto de UDTF, básicamente una función de JavaScript que toma una tabla y devuelve una tabla. Quiero hacer algo similar en PySpark.

Cada fila de los datos debe ser procesada. Al procesar una fila, se leen varias columnas y se alimentan en varias funciones. Esas funciones crean nuevos datos que se alimentan en nuevas columnas. Cada fila también se convierte en múltiples filas.

Por ejemplo, de una fila podemos producir 3 filas, cada una con nuevas columnas y nuevos datos.

Idealmente, me gustaría pasar un DataFrame y devolver un nuevo DataFrame más grande que tenga las nuevas filas y columnas.

forEach no puede tener un tipo de retorno, por lo que no parece apropiado. Explode es una función muy simple y no parece apropiada. Transform parece ser lo que quiero, pero no está claro cómo iterar sobre todas las filas.

¿Iterar sobre cada fila siempre es una mala idea en PySpark? El conjunto de datos con el que estoy trabajando será muy grande. Muchas funciones como collect no funcionarán para conjuntos de datos grandes.

Además, me he centrado principalmente en usar un DataFrame (no el de pandas). Solo he investigado brevemente RDD y los dataframes de pandas.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que lo que quiero hacer es posible, pero no estoy seguro de cómo hacerlo. Cualquier consejo sería muy apreciado.

    Parece que estás buscando una forma de procesar cada fila de un DataFrame en PySpark y devolver un nuevo DataFrame con las nuevas filas y columnas.

    La función foreach no puede tener un tipo de retorno, por lo que no es apropiado para esta tarea. La función explode tambiénes demasiado simple para esta tarea. La función transform puede ser lo que estás buscando, pero no está claro cómo iterar sobre todas las filas.

    Iterar sobre cada fila no siempre es una mala idea en PySpark, pero es importante considerar el tamaño del conjunto de datos. Muchas funciones, como collect, no funcionarán para grandes conjuntos de datos.

    Es posible hacer lo que estás buscando con PySpark, pero se recomienda investigar también RDD y pandas DataFrames.

    ¡Buena suerte con tu proyecto!

Comments are closed.