java - MapPartitionFunction 返回空值
问题描述
我正在使用 java 火花。在这里,我正在从 hdfs 读取数据集,然后对其应用 mapPartition。在调用函数结束时,我可以看到输出行具有未收集到我的 df2 数据集中的值。下面是我的代码。
主要方法
Dataset<Row> df = readDataFrame();
df.show();
Dataset<Row> df2 = df.mapPartitions(new DataframeProcessMap(getConfig()), RowEncoder.apply(getSchema()));
DataframeProcessMap 类
public class DataframeProcessMap implements MapPartitionsFunction<Row,Row> {
private final Config config;
public DataframeProcessMap(Config config){
this.config=config;
}
@Override
public Iterator<Row> call(Iterator<Row> iterator) throws Exception{
List<Row> outputRows = new ArrayList();
while (iterator.hasNext()){
Row inputRow = iterator.next();
ArrayList output = projectAndRenameColumn(inputRow);
Row outputRow = DataIntegrationUtils.getRow(output.toArray(), getSchema());
System.out.println(outputRow);
outputRows.add(outputRow);
}
return outputRows.iterator();
}
public ArrayList projectAndRenameColumn(Row inputData){
...
// Some processing
}
public StructType getSchema(){
...
//schema from config file
}
}
getSchema() 也存在于与此完全相同的主类中。
在调用方法 System.out.println(outputRow); 给我正确的输出。但是,我在 df2 中得到空行。为什么?
解决方案
推荐阅读
- arrays - 检查 bash 中的索引数组是稀疏还是密集
- c# - 如何保持协程直到条件为真 Unity
- go - 为什么“go get”有时会检索过时的提交?
- go - 为什么 Go 中的错误消息不应该以标点符号结尾?
- javascript - chrome 扩展中的 vuex 共享状态
- python - 在 flask-restful 中序列化 UUID 对象
- r - 如何从 R 中的本地文件夹中 rbind 多个数据帧?
- ios - 从用 Swift/Objective-C 编写的 iOS 应用程序回复评论 API
- sqlalchemy - SQLalchemy 在时间序列的 TOP / END / CONTINUATION 插入行,以便为现有表
- java - 如何在 Android Studio 的片段中添加日历?