apache-spark - 更改 spark _temporary 目录路径

标签 apache-spark hadoop pyspark partitioning

是否可以更改 _temporary spark在写入之前保存其临时文件的目录?

特别是,由于我正在编写表的单个分区,因此我希望临时文件夹位于分区文件夹中。

有可能吗?

最佳答案

由于它的实现,没有办法使用默认的 FileOutputCommitter,FileOutputCommiter 创建了一个 ${mapred.output.dir}/_temporary 写入文件的子目录,稍后提交后,移至 ${mapred.output.dir} .
最后,删除了整个临时文件夹。当两个或多个 Spark 作业具有相同的输出目录时,文件的相互删除将是不可避免的。
最终,我下载了 org.apache.hadoop.mapred.FileOutputCommitter org.apache.hadoop.mapreduce.lib.output.FileOutputCommitter (您可以将其命名 YourFileOutputCommitter )进行了一些更改以允许 _temporaly 重命名
在您的驱动程序中,您必须添加以下代码:

val conf: JobConf = new JobConf(sc.hadoopConfiguration)
conf.setOutputCommitter(classOf[YourFileOutputCommitter])


// update temporary path for committer 
YourFileOutputCommitter.tempPath = "_tempJob1"
注意:最好使用 MultipleTextOutputFormat 重命名文件,因为写入同一位置的两个作业可以相互覆盖。

Update


我在我们的技术博客中创建了简短的帖子,其中包含更多详细信息
https://www.outbrain.com/techblog/2020/03/how-you-can-set-many-spark-jobs-write-to-the-same-path/

关于apache-spark - 更改 spark _temporary 目录路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55595930/

相关文章:

apache-spark - 当执行人丢失时会发生什么?

scala - 如何在scala中修复foreach()缺少的参数类型

hadoop - 从 HUE 使用 JAR

java - 在 MapReduce 中处理用户输入字符串

pandas - 如何使用pyspark的@pandas_udf进行groupby.agg

python - Py4JException : Constructor org. apache.spark.sql.SparkSession([class org.apache.spark.SparkContext, class java.util.HashMap]) 不存在

arrays - spark udaf 更新数组类型的元组

scala - 将决策树训练分类器的模型输出保存为 Spark Scala 平台中的文本文件

pyspark - 汇总表结果中的舍入结果(pyspark)

apache-spark - Apache Spark 警告 "Calling spill() on RowBasedKeyValueBatch"的含义