我有一个 JavaRDD<Model> ,我需要将它写成多个具有不同布局的文件 [RDD 中的一两个字段在不同布局之间会有所不同]。

当我使用 saveAsTextFile() 调用模型的 toString() 方法时,这意味着将写入相同的布局作为输出。

目前我正在做的是使用 map 转换方法迭代 RDD 并返回具有其他布局的不同模型,因此我可以使用 saveAsTextFile() 操作写入不同的输出文件。

仅仅因为一两个字段不同,我需要再次迭代整个 RDD 并创建新的 RDD,然后将其保存为输出文件。

例如:

当前 RDD 的字段:

角色指标、姓名、年龄、地址、部门

输出文件 1:

姓名、年龄、地址

输出文件 2:

角色指标、姓名、年龄、部门

对此有什么最佳解决方案吗?

问候,
香卡

最佳答案

您想使用 foreach ,而不是 collect

您应该将函数定义为扩展 VoidFunction 的实际命名类。为这两个文件创建实例变量,并添加关闭文件的 close() 方法。您的 call() 实现将编写您需要的任何内容。

完成后记得在函数对象上调用 close()

关于java - Spark - 将 RDD 保存到多个文件作为输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31399913/

10-14 10:30
查看更多