【发布时间】:2017-02-10 08:12:08
【问题描述】:
我有一个数据框,我想为每一行添加 new_col=max(some_column0) 由其他一些 column1 分组:
maxs = df0.groupBy("catalog").agg(max("row_num").alias("max_num")).withColumnRenamed("catalog", "catalogid")
df0.join(maxs, df0.catalog == maxs.catalogid).take(4)
在第二个字符串中我得到一个错误:
AnalysisException: u'Detected cartesian product for INNER join between 逻辑计划\nProject ... 使用 CROSS JOIN 语法允许 这些关系之间的笛卡尔积。;'
我不明白什么:为什么 spark 在这里找到笛卡尔积?
获得此错误的一种可能方法:我将 DF 保存到 Hive 表,然后再次初始化 DF 作为从表中选择。或者用 hive 查询替换这两个字符串 - 无论如何。但是我不想保存DF。
【问题讨论】:
标签: pyspark spark-dataframe apache-spark-2.0