我是新来的蜂巢和火花。
假设我在sql中有以下查询。
select col1, col2, min(col3), first(col4) from tablename group by col1, col2
因为我不想把col4包括在我第一次参加的小组中(col4)(但我希望col4被显示)
我想在hive中编写相同的查询,但在hive中没有第一个函数。
参考:https://docs.treasuredata.com/articles/hive-aggregate-functions
我想用spark sql(使用dataframes)编写相同的查询。
类似地,在spark聚合函数中没有第一个函数。(*可用的聚合方法有
avg
,max
,min
,sum
,count
,val df1 = sqlContext.sql(" select * from TABLENAME").groupBy("COL1","COL2").agg("COL3" -> "MIN", "COL4" -> "????")
。*)参考:org.apache.spark.sql.groupeddata
例如:
有没有办法写同样的蜂巢和火花?
最佳答案
如果不想将col4
包含在group by
中并将其与sum()
一起包含在select中,则需要分析功能:
select col1,
col2,
min(col3) over (partition by col1, col2) as min_col3,
col4
from tablename;
请参见此处的文档:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+WindowingAndAnalytics