我的代码:
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;
}
输出:
finalJoined Dataset<Row>
会正确显示所有具有适当值的列和行,但是 validatedDS Dataset<Row>
仅显示一栏为空值。
*预期输出:*
validatedDS 也应显示与 finalJoined 数据集相同的值,因为我仅在map函数内部执行验证,而未更改数据集本身。
如果您需要更多信息,请告诉我。
答案 0 :(得分:0)
Encoders.bean
适用于Bean类。 Row
不是其中之一(不会为特定字段定义setter和getter,而只是通用getter)。
要返回Row
对象,您必须使用RowEncoder
并提供预期的输出模式。