【发布时间】:2022-01-04 07:32:44
【问题描述】:
请教关于如何使用 Apache Spark 和 Java 实现内部连接的小问题。
我有这段非常简单的代码。
final Dataset<Row> dataSetTableLeft = getDatasetForLeft();
final Dataset<Row> dataSetTableRight = getDatasetForRight();
final Dataset<Row> dataSetTableResult = dataSetTableLeft.join(dataSetTableRight);
dataSetTableLeft.show();
dataSetTableRight.show();
dataSetTableResult.show();
第一张表dataSetTableLeft.show ,长这样,很直观。
+----------+-----+
| time|label|
+----------+-----+
|1637020800| 0|
|1637107200| 0|
|1637193600| 0|
|1637280000| 0|
|1637366400| 0|
|1637452800| 0|
+----------+-----+"
第二张表dataSetTableRight,长这样,也很直观。
+----------+-----+
| time|label|
+----------+-----+
|1637193600| 1|
|1637280000| 2|
|1637366400| 1|
+----------+-----+"
我想要实现的是这样一个结果表,它是一种内连接。
+----------+-----+
| time|label|
+----------+-----+
|1637020800| 0|
|1637107200| 0|
|1637193600| 1|
|1637280000| 2|
|1637366400| 1|
|1637452800| 0|
+----------+-----+"
不幸的是,我没有看到任何这样的功能。 innerjoin()
因此,我正在尝试某种组合
dataSetTableLeft.unionAll(dataSetTableRight);
dataSetTableLeft.crossJoin(dataSetTableRight);
到目前为止没有任何运气。
实现内连接的正确方法是什么?
【问题讨论】:
标签: java apache-spark apache-spark-sql