联合火花数据集循环

时间:2019-12-13 09:21:30

标签: java apache-spark apache-spark-dataset

我正在尝试将数据集循环添加到空数据集。 但是结果数据集始终为空。

我试图通过仅执行代码中注释的第1行来从循环中消除变量failedRows,但仍然有空的failedRows数据集。

Dataset<Row> failedRows = sparkSession.createDataFrame(new ArrayList<>(), itemsDS.schema());
failedRows.count();
Dataset<Row> filteredDs;
for(String tagName: mandatoryTagsList){
    //failedRows.union(itemsDS.filter(functions.col(tagName).isNull()));//Line 1
    filteredDs = itemsDS.filter(functions.col(tagName).isNull());
    if(filteredDs.count()>0){
        failedRows.union(filteredDs);//Line 2
        failedRows.count();
    }
}

有人知道为什么工会没有真正产生期望的结果吗?

1 个答案:

答案 0 :(得分:0)

您每次都需要保存到一个新变量。

Dataset与Spark中的所有分布式集合一样都是不可变的。

failedRows = failedRows.union(filteredDs);//Line 2