从Hive中的列表中查找最大值

时间:2017-04-28 08:41:33

标签: hadoop hive hiveql

我需要从HIVE中的列表中找到最大值。

例如: 如果我有价值观 列表中的[5,4,3]我需要得到5。

max(list_name)无效。 有没有解决方法。

3 个答案:

答案 0 :(得分:1)

它可能不是最优化的,但它有点有用。

 select max(arr) from ( select explode( array(4, 5, 1, 20, 45, 47, 9) ) as arr ) t

+------+--+
| _c0  |
+------+--+
|  47  |
+------+--+

答案 1 :(得分:0)

您可以看到此doc

根据您的情况,如果您有一个表名example

| id | arr   |
| 1  | [1,2] |
| 2  | [3,4] |

如果要获得

的结果
| id | max_arr|
| 1  |  2     |
| 2  |  4     |

尝试这个SQL

SELECT id, max(arr_val) as max_arr FROM example LATERAL VIEW explode(arr) arrtable AS arr_val group by id

只有一个问题,您的id必须是唯一的。

答案 2 :(得分:0)

您可以对数组的最小值/最大值执行以下操作:

SELECT sort_array(arr)[0] as min_arr,
sort_array(arr)[size(arr)-1] as max_arr,
FROM example;

在我所知道的所有情况下,这都比侧视图和爆炸组更好。

但是我不明白为什么没有min_array(arr)