我的一项 Spark 作业目前正在运行空输入,因此不产生任何输出。现在很好,但我仍然需要知道即使没有产生镶木地板输出,火花作业也会运行。
_SUCCESS即使根本没有输出,有没有办法强制 spark 写入文件?目前,如果有输入,它不会向将有输出的目录写入任何内容,因此我无法确定是否存在故障(这是更大的自动化管道的一部分,因此它会不断重新安排作业,因为有没有迹象表明它已经运行)。
_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)
| 归档时间: |
|
| 查看次数: |
12306 次 |
| 最近记录: |