簡體   English   中英

退出連接錯誤:org.apache.spark.sql.AnalysisException:檢測到隱式笛卡爾積

[英]Left Join errors out: org.apache.spark.sql.AnalysisException: Detected implicit cartesian product

“左連接”要求在一個數據幀上使用“ spark.sql.crossJoin.enabled = true”或調用“ persist()”。

SELECT * FROM LHS left join RHS on LHS.R = RHS.R

如何在沒有“ spark.sql.crossJoin.enabled = true”和持久保存數據幀的情況下使“左聯接”工作?

以下異常在Spark 2.3.3和2.4.4中均發生。

線程“主”中的異常org.apache.spark.sql.AnalysisException:檢測到邏輯計划OneRowRelation和...之間的LEFT OUTER聯接的隱式笛卡爾積。...聯接條件丟失或微不足道。 或者:使用CROSS JOIN語法在這些關系之間允許笛卡爾乘積,或者:通過設置配置變量spark.sql.crossJoin.enabled = true啟用隱式笛卡爾乘積;或者

使用數據框的Spark2.4.3

scala> var lhs = spark.createDataFrame(Seq((1,"sda"),(2,"abc"))).toDF("id","value")
scala> var rhs = spark.createDataFrame(Seq((2,"abc"),(3,"xyz"))).toDF("id1","value1")

scala> lhs.join(rhs,col("id")===col("id1"),"left_outer")

scala> lhs.join(rhs,col("id")===col("id1"),"left_outer").show
+---+-----+----+------+
| id|value| id1|value1|
+---+-----+----+------+
|  1|  sda|null|  null|
|  2|  abc|   2|   abc|
+---+-----+----+------+

沒有面臨任何問題。

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM