Closed. This question needs debugging details。它当前不接受答案。
想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。
3年前关闭。
Improve this question
表格的设计是这样的:
查询是这样的:
我确信此查询将在关系数据库(例如MySQL(在MySQL上经过测试),Oracle,MS SQL SERVER等)上正常工作。但是为什么它不能在Spark上运行?
我是说“Spark在使用groupBy方面有一些限制吗?”,我在
研究完此错误后,Spark基本上建议使用first()函数或first_value()函数作为解决方法。因此,我尝试了但没有得到预期的输出,或者我不确定100%的输出正确。
是因为它是非关系的吗? 我可以假定groupBy的上述特定情况不适用于其他非关系数据库吗? 有人可以考虑解决方法吗?更好的替代方法? 我做了一些研究,有人说“2.0以上的Spark版本不会有这样的问题”。我使用的是Spark 1.6版本,Spark 2.0不会有这样的问题真的吗?
如果我在某处错了,请纠正我。在此先多谢!!
spark应该如何知道应该将其分类?
第一个,随机的,最后一个?
MySQL在这方面更加冷静,因此它返回找到的第一个。
要在Spark中模仿此行为,只需使用“first(category)”作为列定义。
想改善这个问题吗?更新问题,以便将其作为on-topic用于堆栈溢出。
3年前关闭。
Improve this question
表格的设计是这样的:
id | val |category
----------------
a1 | 10 | A
a1 | 30 | B
a1 | 20 | C
a2 | 5 | A
a2 | 7 | B
a2 | 2 | C
a3 | 50 | C
a3 | 60 | B
a3 | 90 | A
查询是这样的:
SELECT max(val), id, category FROM table GROUP BY id;
我确信此查询将在关系数据库(例如MySQL(在MySQL上经过测试),Oracle,MS SQL SERVER等)上正常工作。但是为什么它不能在Spark上运行?
我是说“Spark在使用groupBy方面有一些限制吗?”,我在
mysql
上测试了相同的表设计,效果很好,但在Spark上却给我一个错误,让我显示错误:org.apache.spark.sql.AnalysisException: expression 'category' is neither present in the group by, nor is it an aggregate function. Add to group by or wrap in first() (or first_value) if you don't care which value you get.;
at org.apache.spark.sql.catalyst.analysis.CheckAnalysis$class.failAnalysis(CheckAnalysis.scala:38)
研究完此错误后,Spark基本上建议使用first()函数或first_value()函数作为解决方法。因此,我尝试了但没有得到预期的输出,或者我不确定100%的输出正确。
如果我在某处错了,请纠正我。在此先多谢!!
最佳答案
当您按ID对以下行进行分组时
id | val | category
a1 | 10 | A
a1 | 30 | B
a1 | 20 | C
spark应该如何知道应该将其分类?
第一个,随机的,最后一个?
MySQL在这方面更加冷静,因此它返回找到的第一个。
要在Spark中模仿此行为,只需使用“first(category)”作为列定义。
关于hadoop - groupBy无法在Spark上运行吗? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42954935/