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.

¿Cómo puedo asegurar tamaños de archivo consistentes en conjuntos de datos construidos en Foundry Python Transforms?

Mi transformación de Foundry está produciendo una cantidad diferente de datos en cada ejecución, pero quiero tener un número similar de filas en cada archivo. Puedo usar DataFrame.count() y luego utilizar coalesce/repartition, pero esto requiere calcular el conjunto de datos completo y luego almacenarlo en caché o calcularlo nuevamente. ¿Existe alguna forma de que Spark se encargue de esto?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, Spark proporciona una manera eficiente de controlar la cantidad de archivos de salida producidos por una transformación sin necesidad de calcular el conjunto de datos completo. Puedes utilizar la función repartition con el argumento numPartitions para especificar el número deseado de archivos de salida. repartition redistribuirá y reorganizará los datos a través del número de particiones especificado, asegurando que cada partición tenga aproximadamente el mismo número de registros. Esto controlará efectivamente la cantidad de archivos de salida producidos por la transformación.

    Por ejemplo, si deseas generar un único archivo de salida, puedes utilizar repartition(1) para unir los datos en una única partición. Si deseas generar 10 archivos de salida, puedes utilizar repartition(10) para dividir los datos en 10 particiones. Debes elegir el valor numPartitions basado en el tamaño de tus datos y el tamaño de archivo objetivo, teniendo en cuenta que pocas particiones pueden resultar en archivos desequilibrados, mientras que muchas particiones pueden llevar a problemas de rendimiento.

    Ten en cuenta que la función repartition provoca una redistribución completa de los datos, lo cual puede ser costoso. Si deseas evitar la redistribución de los datos, puedes utilizar coalesce en su lugar, que combinará las particiones existentes sin realizar ninguna redistribución. Sin embargo, coalesce solo puede reducir el número de particiones, no aumentarlo. Por lo tanto, si deseas aumentar el número de archivos de salida, debes utilizar repartition.

Comments are closed.