rah*_*hul 2 scala bigdata apache-spark apache-spark-sql
有没有办法在 sql spark 中按表分组,它选择我正在使用的多个元素代码:
val df = spark.read.json("//path")
df.createOrReplaceTempView("GETBYID")
现在按如下方式分组:
val sqlDF = spark.sql(
  "SELECT count(customerId) FROM GETBYID group by customerId");
但是当我尝试:
val sqlDF = spark.sql(
  "SELECT count(customerId),customerId,userId FROM GETBYID group by customerId");
Spark给出一个错误:
org.apache.spark.sql.AnalysisException: 表达式 'getbyid.
userId' 既不存在于 group by 中,也不是聚合函数。如果您不关心获得的值,请添加到 group by 或包装在 first() (或 first_value)中。
有没有办法做到这一点
是的,这是可能的,您附加的错误消息描述了所有可能性。您可以添加userId到 groupBy:
val sqlDF = spark.sql("SELECT count(customerId),customerId,userId FROM GETBYID group by customerId, userId");
或使用first():
val sqlDF = spark.sql("SELECT count(customerId),customerId,first(userId) FROM GETBYID group by customerId");
| 归档时间: | 
 | 
| 查看次数: | 14234 次 | 
| 最近记录: |