У меня есть фрейм данных, и я хочу добавить для каждой строки new_col=max(some_column0)
, сгруппированной другим столбцом1:
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'Обнаружено декартово произведение для ВНУТРЕННЕГО соединения между логическими планами \ nПроект ... Используйте синтаксис CROSS JOIN, чтобы разрешить декартово произведение между этими отношениями .; '
Чего я не понимаю: почему искра находит здесь декартово произведение?
Возможный способ получить эту ошибку: я сохраняю DF в таблицу Hive, затем снова инициализирую DF как select from table. Или замените эти две строки запросом улья - неважно. Но я не хочу экономить DF.