在Spark Dataframe Java API(spark v2.3.0)中执行相关的标量子查询



我读到在 Spark 中你可以轻松地做一个相关的标量子查询,如下所示:

select
column1,
(select column2 from table2 where table2.some_key = table1.id)
from table1

我还没有弄清楚如何在数据帧API中执行此操作。我能想到的最好的办法就是做一个连接。这样做的问题是,在我的特定情况下,我正在加入一个类似枚举的查找表,该表实际上适用于多个列。

下面是数据帧代码的示例。

Dataset<Row> table1 = getTable1FromSomewhere();
Dataset<Row> table2 = getTable2FromSomewhere();
table1
.as("table1")
.join(table2.as("table2"), 
col("table1.first_key").equalTo(col("table2.key")), "left")
.join(table2.as("table3"), 
col("table1.second_key").equalTo(col("table3.key")), "left")
.select(col("table1.*"), 
col("table2.description").as("first_key_description"),
col("table3.description").as("second_key_description"))
.show();

任何帮助将不胜感激,以确定如何在数据帧 API 中执行此操作。

我还没有弄清楚如何在数据帧API中做到这一点。

因为根本没有DataFrameAPI 可以直接表达这一点(没有明确的JOIN(。将来可能会发生变化:

  • https://issues.apache.org/jira/browse/SPARK-23945
  • https://issues.apache.org/jira/browse/SPARK-18455
  • SparkSQL是否支持子查询?

最新更新