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

时间:2018-06-20 21:47:10

标签: apache-spark apache-spark-sql

我已经阅读到在spark中,您可以像这样轻松地执行相关标量子查询:

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

我还没弄清楚的是如何在DataFrame API中做到这一点。我能想到的最好的办法就是加入。问题是在我的特定情况下,我要加入一个枚举式查找表,该查找表实际上适用于多个列。

下面是DataFrame代码的示例。

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();

在DataFrame API中找出如何执行此操作的任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

  

我还没弄清楚的是如何在DataFrame API中做到这一点。

因为根本没有speed API可以直接表达(没有显式DataFrame)。将来可能会改变: