如何在 Spark SQL 中使用 CROSS JOIN 和 CROSS APPLY

Mir*_*han 4 scala apache-spark apache-spark-sql

我对 Spark 和 Scala 很陌生,我正在编写 Spark SQL 代码。我可以在我的逻辑中应用 CROSS JOIN 和 CROSS APPLY。在这里,我将发布必须转换为 Spark SQL 的 SQL 查询。

select Table1.Column1,Table2.Column2,Table3.Column3
from Table1 CROSS JOIN Table2 CROSS APPLY Table3
Run Code Online (Sandbox Code Playgroud)

我需要将上述查询转换为 Spark SQL 中的 SQLContext。请帮助我。提前致谢。

小智 8

首先在 spark conf 中设置以下属性

spark.sql.crossJoin.enabled=true
Run Code Online (Sandbox Code Playgroud)

然后dataFrame1.join(dataFrame2)将做交叉/笛卡尔连接,

我们也可以使用下面的查询来做同样的事情

sqlContext.sql("select * from table1 CROSS JOIN table2 CROSS JOIN table3...")
Run Code Online (Sandbox Code Playgroud)


Swa*_*shi 5

设置 Spark 配置,

var sparkConf: SparkConf = null

 sparkConf = new SparkConf()

.set("spark.sql.crossJoin.enabled", "true")
Run Code Online (Sandbox Code Playgroud)

使用 crossJoin 方法在 Spark 2.x 中显式交叉连接

crossJoin(右:数据集[_]):DataFrame

var df_new = df1.crossJoin(df2);
Run Code Online (Sandbox Code Playgroud)

注意:交叉连接是最耗时的连接之一,通常应该避免。