我是新来的蜂巢和火花。
假设我在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聚合函数中没有第一个函数。(*可用的聚合方法有avgmaxminsumcountval 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

08-19 09:13