我有一个 JavaRDD<Model>
,我需要将它写成多个具有不同布局的文件 [RDD 中的一个或两个字段在不同布局之间会有所不同]。
当我使用 saveAsTextFile()
它调用toString()
Model 的方法,这意味着相同的布局将作为输出写入。
目前我正在做的是使用 map
迭代 RDD转换方法并返回具有其他布局的不同模型,因此我可以使用 saveAsTextFile() 操作写入不同的输出文件。
仅仅因为一两个字段不同,我需要再次迭代整个RDD并创建新的RDD,然后将其保存为输出文件。
例如:
当前的 RDD 字段:
RoleIndicator, Name, Age, Address, Department
输出文件 1:
姓名、年龄、地址
输出文件 2:
RoleIndicator, Name, Age, Department
有什么最优解吗?
问候, 香卡
最佳答案
您想使用foreach
,而不是collect
。
您应该将函数定义为扩展 VoidFunction
的实际命名类。为这两个文件创建实例变量,并添加一个关闭文件的 close()
方法。您的 call()
实现将编写您需要的任何内容。
记得在完成后对函数对象调用 close()
。
关于java - Spark - 将RDD保存到多个文件作为输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31399913/