更改SPARK_TEMPORY目录路径 [英] Change spark _temporary directory path

查看:18
本文介绍了更改SPARK_TEMPORY目录路径的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

具体地说,因为我正在写入表的单个分区,所以我希望临时文件夹位于分区文件夹中。

可能吗?

文件输出委员会无法使用默认的${mapred.output.dir}/_temporary

由于其实现方式,文件输出委员会会创建一个推荐答案子目录来写入文件,并在提交后移到${mapred.output.dir}。

最后,删除了整个临时文件夹。当两个或多个Spark作业具有相同的输出目录时,将不可避免地相互删除文件。

最终,我下载了org.apache.hadoop.mapred.FileOutputCommitterorg.apache.hadoop.mapreduce.lib.output.FileOutputCommitter(您可以将其命名为您的文件输出委员会)进行了一些更改,允许_Temporaly重命名

在您的驱动程序中,您必须添加以下代码:

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


// update temporary path for committer 
YourFileOutputCommitter.tempPath = "_tempJob1"

注意:最好使用MultipleTextOutputFormat重命名文件,因为写入同一位置的两个作业可以相互覆盖。

更新

我已经在我们的技术博客中创建了简短的帖子,它有更多细节 https://www.outbrain.com/techblog/2020/03/how-you-can-set-many-spark-jobs-write-to-the-same-path/

这篇关于更改SPARK_TEMPORY目录路径的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆