我有一些 Spark 应用程序的结果保存在 HDFS 中,作为名为 part-r-0000X(X=0、1 等)的文件。而且,因为我想将整个内容加入文件中,所以我使用以下命令:
hdfs dfs -getmerge srcDir destLocalFile
前面的命令在 bash 脚本中使用,它使输出目录(part-r-...保存文件的位置)为空,并在循环内执行上述getmerge命令。
问题是我需要在另一个 Spark 程序中使用生成的文件,该程序需要该合并文件作为 HDFS 中的输入。因此,我将其保存为本地,然后将其上传到 HDFS。
我想到了另一种选择,即以这种方式从 Spark 程序中写入文件:
outputData.coalesce(1, false).saveAsTextFile(outPathHDFS)
但我读过 coalesce() 对性能没有帮助。
还有其他想法吗?建议?谢谢!