2017-01-02 42 views
1

是有任何方式组在SQL火花表,其选择多个元素 代码我使用:通过选择与组多个元素中spark.sql

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"); 

它给出了一个错误

org.apache.spark.sql.AnalysisException:expression'getbyid。 userId' 既不在组中,也不是聚合函数。 如果您不在乎 您可以获得哪些价值,则可以添加到第一个()(或first_value)组中。

是否有任何可能的方式做到这一点

回答

3

是的,这是可能的,你连接的错误信息说明一切准备。您可以添加到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");