Java MapPartitionFunction返回空值
我正在使用JavaSpark。在这里,我从hdfs读取数据集,然后在上面应用mapPartition。在调用函数的末尾,我可以看到输出行的值并没有被收集到我的df2数据集中。下面是我的代码 主要方法Java MapPartitionFunction返回空值,java,apache-spark,data-partitioning,Java,Apache Spark,Data Partitioning,我正在使用JavaSpark。在这里,我从hdfs读取数据集,然后在上面应用mapPartition。在调用函数的末尾,我可以看到输出行的值并没有被收集到我的df2数据集中。下面是我的代码 主要方法 Dataset<Row> df = readDataFrame(); df.show(); Dataset<Row> df2 = df.mapPartitions(new DataframeProcessMap(getConfig()), RowEncoder
Dataset<Row> df = readDataFrame();
df.show();
Dataset<Row> df2 = df.mapPartitions(new DataframeProcessMap(getConfig()), RowEncoder.apply(getSchema()));
Dataset df=readDataFrame();
df.show();
Dataset df2=df.mapPartitions(新的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
}
}
公共类DataframeProcessMap实现MapPartitionsFunction{
私有最终配置;
公共DataframeProcessMap(配置){
this.config=config;
}
@凌驾
公共迭代器调用(迭代器迭代器)引发异常{
List outputRows=new ArrayList();
while(iterator.hasNext()){
行inputRow=iterator.next();
ArrayList输出=项目和名称列(inputRow);
Row outputRow=DataIntegrationUtils.getRow(output.toArray(),getSchema());
System.out.println(outputRow);
添加(outputRow);
}
返回outputRows.iterator();
}
公共阵列列表项目和名称列(行输入数据){
...
//一些加工
}
公共结构类型getSchema(){
...
//配置文件中的架构
}
}
getSchema()也存在于与此完全相同的主类中
调用内方法
System.out.println(outputRow);
给我正确的输出。然而,我在df2中得到了空行。为什么