spark-structured-streaming - 在 Spark Structured Streaming JAVA 中合并两个具有不同列的数据集
问题描述
试图找出一种方法来合并两个不同的数据集以形成一个包含所有列的组合数据集。
Dataset<Row> dataActual = rowExtracted.selectExpr(
"split(value,\"[|]\")[3] as sub_date",
"split(value,\"[|]\")[7] as status",
"split(value,\"[|]\")[14] as email_add",
"split(value,\"[|]\")[15] as source_currency",
"split(value,\"[|]\")[19] as processing_date"
);
Dataset<Row> dataStatus = dataActual.select("status").map(
(MapFunction<Row, String>)row-> mapStatus(row.toString()),
Encoders.STRING()).selectExpr("value as txn_latest_status").toDF();
尝试使用 union , join 等但没有任何效果
Dataset<Row> data = dataActual.union(dataStatus);
实际的:
Dataset 1 :
root
|-- sub_date: string (nullable = true)
|-- status: string (nullable = true)
|-- email_add: string (nullable = true)
|-- source_currency: string (nullable = true)
|-- processing_date: string (nullable = true)
Dataset 2 :
root
|-- txn_latest_status: string (nullable = true)
预期结果:组合数据集
root
|-- sub_date: string (nullable = true)
|-- status: string (nullable = true)
|-- email_add: string (nullable = true)
|-- source_currency: string (nullable = true)
|-- processing_date: string (nullable = true)
|-- txn_latest_status: string (nullable = true)
解决方案
请在下面找到/
scala> res18.show
+-----+
|names|
+-----+
| A|
| B|
+-----+
scala> res19.show
+-------+
|numbers|
+-------+
| 1|
| 2|
+-------+
scala>res18.join(res19).show
+-----+-------+
|names|numbers|
+-----+-------+
| A| 1|
| A| 2|
| B| 1|
| B| 2|
+-----+-------+
推荐阅读
- python - 即时编译为字节码/本机代码
- facebook-graph-api - 如何在 Firebase 云功能中正确执行 axios POST 请求
- apache-kafka - NiFi 的 ConsumeKafka_2_0 支持带有 ScramLoginModule 的 JAAS SASL
- java - java - 将复杂的 java 对象转换为 json
- linux - 如何通过管道将终端命令输出到 Zenity 进度对话框文本?
- ios - 如何使用cordova将自定义框架添加到“链接框架和库”?
- mysql - 优化 mySQL 查询 - 更新 JOIN 2 表
- php - 将递归数组转换为二维数组
- c++ - 我是否需要保护仅在同一线程中修改的变量的读取?
- java - 创建与zookeeper服务器的连接时如何指定超时