我有一个格式如下的文本文件:
ID,Name,Rating
1,A,3
2,B,4
1,A,4
我想在 spark 中找到每个 ID 的平均评分。这是我到目前为止的代码,但它一直给我一个错误:
val Avg_data=spark.sql("select ID, AVG(Rating) from table")
ERROR: org.apache.sapk.sql.AnalysisException: grouping expressions sequence is empty, and 'table'.'ID' is not an aggregate function. Wrap '(avg(CAST(table.'Rating' AS BIGINT)) as 'avg(Rating)')' in windowing function(s).........
最佳答案
AVG()
是一个聚合函数,因此您也需要一个分组依据
val Avg_data=spark.sql("select ID, AVG(Rating) as average from table group by ID")
你应该有 Avg_data
作为
+---+-------+
|ID |average|
+---+-------+
|1 |3.5 |
|2 |4.0 |
+---+-------+
关于scala - 在 spark-sql 中执行 SQL 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49478496/