在pyspark中加入两个数据框会导致“检测到隐式笛卡尔积”错误

时间:2019-04-01 23:21:28

标签: python apache-spark pyspark

我做了以下动作:

  1. 作为火花数据帧加载到json
  2. 此数据框的(5)列中的分析数据
  3. 对从这5列中提取的数据应用了一个函数(将连续值按百分位数划分为10个bin,尽管我不认为这件事的细节)
  4. 使用spark.createDataFrame创建了一个新的数据框,其中包含所有这些新值以及5个完全不同的列名
  5. 尝试将原始数据框与新数据框完全外部联接。

由于我的综合数据框中的所有列的名称都与原始数据框中的列的名称不同,因此外部联接应该与沿列轴简单地将两个数据框串联起来一样。

但是,相反,我收到此错误:

AnalysisException: u'Detected implicit cartesian product for FULL OUTER join between logical plans\nUnion\n:- Project\n:

我该如何解决?我只是想像https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.concat.html

那样按列连接数据帧

1 个答案:

答案 0 :(得分:1)

根据您的实现,您需要设置:

spark.sql.crossJoin.enabled = true