scala - 在 spark-sql 中执行 SQL 语句

标签 scala apache-spark apache-spark-sql

我有一个格式如下的文本文件:

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/

相关文章:

scala - "+="会不会重新分配?

apache-spark - 从 Spark 数据框中获取特定行

apache-spark - 我们可以通过同一个 kafka 主题传递不同类型的消息吗?

mysql - 基于另一个表 PySpark/SQL 的日期时间列聚合列

Scala 宏和单独的编译单元

scala - 在 Scala 常规类上使用镜头

scala - 在 Scala 中用单位漂亮地表示数量

java - Spark Maven jar 文件依赖

scala - 编写在 Scala 中调用泛型函数的泛型函数

scala - 数据帧 : how to groupBy/count then filter on count in Scala