java - Spark - 将RDD保存到多个文件作为输出

标签 java apache-spark

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

相关文章:

java - 如何以编程方式从使用 ADFS 的应用程序请求网页

hadoop - 如何使用 Spark 在 yarn 簇模式下将原木直接打印到控制台上

scala - Spark - 查找两个不同列中每个不同值的总出现次数

hadoop - Spark yarn-cluster 模式 - 读取通过 --files 传递的文件

hadoop - Hadoop-当数据到达hdfs时执行脚本

r - Azure HDInsight 上 RStudio 服务器下的 SparkR

java - Java 中的 GUI 线程

java - Spring 发现 beans 从版本 4.3 更改为版本 5

java - 服务器返回 HTTP 响应代码 : 500 when we are sending Arabic language content

java - 使用我的前缀表达式求值器出现 java.lang.OutOfMemory 错误