提问者:小点点

Apache Spark-Map函数在java中返回空数据集


我的代码:

finalJoined.show();

Encoder<Row> rowEncoder = Encoders.bean(Row.class);                             
Dataset<Row> validatedDS = finalJoined.map(row -> validationRowMap(row), rowEncoder);       
validatedDS.show();

地图功能:

public static Row validationRowMap(Row row) {

        //PART-A validateTxn()

        System.out.println("Inside map");
        //System.out.println("Value of CIS_DIVISION is " + row.getString(7));

        //1. CIS_DIVISION
        if ((row.getString(7)) == null || (row.getString(7)).trim().isEmpty()) {
            System.out.println("CIS_DIVISION cannot be blank.");
        }

return row;

}

输出:

finalJoine数据集

*预期产出:*

validatedDS也应该显示与finalJoine数据集相同的值,因为我只在map函数内部执行验证,而不更改数据集本身。

如果您需要更多信息,请告诉我。


共1个答案

匿名用户

Encoders. bean旨在与Bean类一起使用。Row不是其中之一(没有为特定字段定义setter和getter,只有泛型getter)。

要返回Row对象,您必须使用RowEncoder并提供预期的输出模式。

检查例如行类型火花数据集的编码器