如何让 spark 为空的镶木地板输出写一个 _SUCCESS 文件?

jbr*_*own 5 apache-spark

我的一项 Spark 作业目前正在运行空输入,因此不产生任何输出。现在很好,但我仍然需要知道即使没有产生镶木地板输出,火花作业也会运行。

_SUCCESS即使根本没有输出,有没有办法强制 spark 写入文件?目前,如果有输入,它不会向将有输出的目录写入任何内容,因此我无法确定是否存在故障(这是更大的自动化管道的一部分,因此它会不断重新安排作业,因为有没有迹象表明它已经运行)。

vvl*_*rov 1

_SUCESS文件是由 Hadoop 代码编写的。因此,如果您的 Spark 应用程序未生成任何输出,您可以使用 Hadoop API 自行创建 _SUCCESS 文件。

如果您使用 PySpark - 查看https://github.com/spotify/snakebite

如果您使用 Scala 或 Java - 查看 Hadoop API。

另一种方法是要求 Spark 将空数据集写入输出。但这可能不是您所需要的 - 因为会有下游消费者可能不喜欢的文件part-00000_SUCESS

以下是如何在 pyspark 中保存空数据集(在 Scala 中代码应该相同)

$ pyspark
>>> sc.parallelize([], 1).saveAsTextFile("/path/on/hdfs")
>>> exit()

$ hadoop fs -ls /path/on/hdfs
Found 2 items
-rw-r--r--   2 user user          0 2016-02-25 12:54 /path/on/hdfs/_SUCCESS
-rw-r--r--   2 user user          0 2016-02-25 12:54 /path/on/hdfs/part-00000
Run Code Online (Sandbox Code Playgroud)