【问题标题】:How to use CROSS JOIN and CROSS APPLY in Spark SQL如何在 Spark SQL 中使用 CROSS JOIN 和 CROSS APPLY
【发布时间】:2019-07-03 16:01:00
【问题描述】:

我对 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

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

【问题讨论】:

    标签: scala apache-spark apache-spark-sql


    【解决方案1】:

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

    spark.sql.crossJoin.enabled=true
    

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

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

    sqlContext.sql("select * from table1 CROSS JOIN table2 CROSS JOIN table3...")
    

    【讨论】:

    • 感谢您的回答。它完全阐明了交叉连接。您能否添加任何好的做法和/或示例来进行交叉申请。谢谢。
    【解决方案2】:

    设置 Spark 配置,

    var sparkConf: SparkConf = null
    
     sparkConf = new SparkConf()
    
    .set("spark.sql.crossJoin.enabled", "true")
    

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

    crossJoin(右:Dataset[_]):DataFrame

    var df_new = df1.crossJoin(df2);
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-03
      • 2019-02-18
      • 2013-07-19
      • 1970-01-01
      • 2016-04-10
      相关资源
      最近更新 更多