我想运行一个spark作业,输出到包含作业开始日期的某个目录。有没有办法在所有火花节点中共享一个日期对象(例如joda.time),所以无论哪个节点输出什么管道,它们都输出到相同的dir结构?
答案 0 :(得分:1)
只需在驱动程序中创建对象(作为val
)并在需要的地方关闭它。应将其复制到工作节点以供您根据需要使用。
答案 1 :(得分:1)
如果问题是
有没有办法共享一个日期对象(例如joda.time) 在所有火花节点
然后答案就是"广播对象"
如果真正的问题是如何指定输出路径,那么,实际上你不需要广播路径。你可以说rdd.saveAsFile(/ path),该函数会自动将每个分区转储到一个文件中(如part000左右)。当然,所有工作节点都必须能够访问" path"变量,所以在真正的集群中它必须是HDFS或S3或NFS或者喜欢。
来自文档:
saveAsTextFile(path)
将数据集的元素写为文本文件(或文本集) 文件)在本地文件系统,HDFS或任何其他目录中的给定目录中 Hadoop支持的文件系统。 Spark会在每个元素上调用toString 将其转换为文件中的一行文字。