Spark trama de datos de escritura a CSV crea archivo de directorio _temporary en modo autónomo Cluster

Omkar:

Estoy corriendo spark joben un clúster que tiene 2 nodos de trabajo! Estoy utilizando el código de abajo (java chispa) para guardar la trama de datos computarizada como csv a nodos de trabajo.

dataframe.write().option("header","false").mode(SaveMode.Overwrite).csv(outputDirPath); Estoy tratando de entender cómo chispa escribe múltiples archivos de piezas en cada nodo del trabajador.

Run1) worker1tiene part filesy SUCCESS; worker2tiene _temporarty/task*/part*cada tarea tiene el archivos de piezas plazo.

Run2) worker1tiene archivos de piezas y también _temporaryde directorio; worker2tienemultiple part files

¿Puede cualquier persona ayudar a entender por qué es este comportamiento? 1) ¿Debería considerar los registros en outputDir/_temporarycomo parte del archivo de salida junto con el part files in outputDir?

2) Se _temporarydir supone que se elimina después de ejecución del trabajo y mover los partarchivos a outputDir?

3) por qué no puede crear archivos de piezas directamente bajo ouput dir?

coalesce(1)y repartition(1)no puede ser la opción ya que el archivo outputDir en sí será de alrededor500GB

Spark 2.0.2. 2.1.3 y Java 8, no HDFS

Omkar:

Después del análisis, observó que mi trabajo está utilizando chispa fileoutputcommitter version 1que es por defecto. Entonces incluido config para utilizar fileoutputcommitter version 2en lugar de version 1y probado en 10 nodo de clúster chispa independiente en AWS. Todos part-* filesson generados directamente bajo outputDirPathespecificado en eldataframe.write().option("header","false").mode(SaveMode.Overwrite).csv(outputDirPath)

Podemos establecer la propiedad

  1. Mediante la inclusión de la misma que --conf 'spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version=2'enspark-submit command

  2. o establecer la propiedad usando sparkContext javaSparkContext.hadoopConifiguration().set("mapreduce.fileoutputcommitter.algorithm.version","2")

Entiendo la consecuencia en caso de fallos como se indica en los documentos de chispa , pero he conseguido el resultado deseado!

spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version , defaultValue es 1
La salida de la versión algoritmo committer archivo, número de versión válida algoritmo: 1 o 2. La versión 2 puede tener un mejor rendimiento, pero la versión 1 puede controlar los errores mejor en ciertas situaciones, como por mapreduce-4815.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=168136&siteId=1
Recomendado
Clasificación