Hadoop 从配置单元中的列表中查找最大值
我需要从配置单元中的列表中查找最大值 例如: 如果我有价值观 [5,4,3]在一个列表中,我需要得到5 max(列表名称)不工作。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
有什么解决办法吗。它可能不是最优化的,但它可以工作
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
的吗?这看起来很相似: