apache-spark - Apache Spark - 在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;
}
输出 :
finalJoined Dataset<Row>
正确显示所有具有正确值的列和行,但是validDS Dataset<Row>
仅显示一列具有空值。
*预期输出:*
validatedDS也应该显示与finalJoined数据集相同的值,因为我只在 map 函数内执行验证,而不是更改数据集本身。
如果您需要更多信息,请告诉我。
解决方案
Encoders.bean
旨在与 Bean 类一起使用。Row
不是其中之一(没有为特定字段定义 setter 和 getter,只有通用 getter)。
要返回Row
对象,您必须使用RowEncoder
并提供预期的输出模式。
推荐阅读
- python - 如何在 Jupyter 笔记本中打印时重新定位光标
- python - Groupby 和条件替换
- python - 为什么我的 MIP 求解器不采用“NA”值?
- apache-spark - 计算 Apache Spark 上每个执行程序的处理时间
- ios - 一个iphone应用程序是否可以读取另一个应用程序的日志?
- excel - 如何在 Excel Solver 中实现 if 语句
- html - 如果按下 pdf-download-button 不会触发事件
- java - Rserve / R 堆栈并行处理
- android - Intent extras 始终为空
- ansible - 合并多个字典列表