Hadoop 从配置单元中的列表中查找最大值

Hadoop 从配置单元中的列表中查找最大值,hadoop,hive,hiveql,Hadoop,Hive,Hiveql,我需要从配置单元中的列表中查找最大值 例如: 如果我有价值观 [5,4,3]在一个列表中,我需要得到5 max(列表名称)不工作。 有什么解决办法吗。它可能不是最优化的,但它可以工作 select max(arr) from ( select explode( array(4, 5, 1, 20, 45, 47, 9) ) as arr ) t +------+--+ | _c0 | +------+--+ | 47 | +------+--+ 它可能不是最优化的,但它有点工作 s

我需要从配置单元中的列表中查找最大值

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

max(列表名称)不工作。
有什么解决办法吗。

它可能不是最优化的,但它可以工作

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

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

它可能不是最优化的,但它有点工作

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

+------+--+
| _c0  |
+------+--+
|  47  |
+------+--+
你可以看到这个

在您的情况下,如果您有一个表名
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
必须是唯一的。

您可以看到这一点

在您的情况下,如果您有一个表名
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
必须是唯一的。

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

SELECT sort_array(arr)[0] as min_arr,
sort_array(arr)[size(arr)-1] as max_arr,
FROM example;
在我所知道的所有情况下,这比侧面视图爆炸和分组更有效


但是我不明白为什么没有
min\u数组(arr)

对于数组的min/max,可以执行以下操作:

SELECT sort_array(arr)[0] as min_arr,
sort_array(arr)[size(arr)-1] as max_arr,
FROM example;
在我所知道的所有情况下,这比侧面视图爆炸和分组更有效


但是我不明白为什么没有
min\u数组(arr)

你能展示一下你是如何尝试使用
max
的吗?这看起来很相似:你能展示一下你是如何尝试使用
max
的吗?这看起来很相似: