如何在火花中使用`saveATextFile`保存`wholeTextFile` RDD的结果?

Posted

技术标签:

【中文标题】如何在火花中使用`saveATextFile`保存`wholeTextFile` RDD的结果?【英文标题】:How to save results from `wholeTextFile` RDD using `saveATextFile` in spark? 【发布时间】:2015-11-30 21:46:49 【问题描述】:

我在wholeTextFile RDD 中使用 spark 在 HDFS 中创建了许多文件,我希望能够使用

将它们保存在特定目录中
anRDD.saveAsTextFile(<directory_path>)

这样做的问题是它会尝试创建一个全新的目录。我只想将这些结果放在现有目录中。我该怎么做呢?

我查看了文档here,但path 参数似乎没有任何改变。

谢谢。

【问题讨论】:

【参考方案1】:

你有几个选择:

    滚动您自己的 saveAsTextFile 实现,它不会检查输出目录是否已经存在。

    写入临时文件夹,然后将文件移动到现有目录。


RDD.saveAsTextFile 使用 TextOutputFormat,一个 Hadoop OutputFormat,来写入结果。如果您查看TextOutputFormat 及其基类FileOutputFormat 的实现,则没有覆盖或附加到现有目录的选项。这是有道理的,因为它需要为每个输出部分提供唯一的文件名。

【讨论】:

这对我来说没有意义,因为HIVE 表通过在特定表的目录中创建许多不同名称的文件来工作。所以如果HIVE 可以做到,为什么不hadoop?如果hadoop 那么为什么不spark Hive 有额外的逻辑来处理这个用例。 Hadoop 和 Spark 没有。这不是cancan't的问题,只是实现与否。

以上是关于如何在火花中使用`saveATextFile`保存`wholeTextFile` RDD的结果?的主要内容,如果未能解决你的问题,请参考以下文章

如何在文本文件中保存 rdd 操作?斯卡拉/火花

如何使用火花流检查 rdd 是不是为空?

在火花簇scala中保存随机森林模型时出错

如何在火花中合并两个不同的数据帧? [复制]

在天蓝色斑点中保存火花ML模型

如何仅从 kafka 资源中获取值以激发火花?