我有一个 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/