【问题标题】:How to extract key and value of greatest value in Hive map?如何在 Hive 映射中提取最大值的键和值?
【发布时间】:2018-08-08 22:51:23
【问题描述】:

我在 Hive 中有一个字段,其中包含一个如下所示的地图: {"258":0.10075276284486512,"259":0.00093852142318649,"262":0.015979321337627,"264":0.0020453444772401,"265":0.024689771044731,"268":0.018837925051338,"274":0.011282124863882}

我想提取此映射中每一行的最大值的键[和值,如果可能的话]。在这种情况下,理想的函数如下所示:

select max_val(col) from table

输出:

 max_val
 "258"
 "165"
 "204"

【问题讨论】:

    标签: hive


    【解决方案1】:

    explodemap 列,然后使用像rank 这样的排名函数根据需要对值进行排序并获得第一个这样的行。 (这假设有一种方法可以在下面显示的查询中识别除mapid 之外的任何其他列的行。)

    select id,k,v
    from (select id,k,v,rank() over(partition by id order by v desc) as rnum
          from tbl
          lateral view explode(mapCol) t as k,v
         ) t
    where rnum=1
    

    【讨论】:

      猜你喜欢
      • 2017-02-04
      • 2017-05-07
      • 2016-09-15
      • 1970-01-01
      • 1970-01-01
      • 2018-09-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多