我有一个数据框,我想为每一行添加
new_col=max(some_column0)
,并按照另一列的分组条件some_column1
进行分组操作。maxs = df0.groupBy("catalog").agg(max("row_num").alias("max_num")).withColumnRenamed("catalog", "catalogid")
df0.join(maxs, df0.catalog == maxs.catalogid).take(4)
在第二个字符串中,我遇到了一个错误:
分析异常:u“在逻辑计划之间的内部联接中检测到笛卡尔积\n项目...使用CROSS JOIN语法允许这些关系之间的笛卡尔积。”
我不理解的是:为什么Spark会在这里找到笛卡尔积?
出现此错误的可能原因:我将DF保存到Hive表中,然后重新初始化DF以从表中选择。或者将这两个字符串替换为Hive查询-无论如何都可以。但我不想保存DF。