我的代码:
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函数内部执行验证,而不更改数据集本身。
如果您需要更多信息,请告诉我。
Encoders. bean
旨在与Bean类一起使用。Row
不是其中之一(没有为特定字段定义setter和getter,只有泛型getter)。
要返回Row
对象,您必须使用RowEncoder
并提供预期的输出模式。
检查例如行类型火花数据集的编码器