Hadoop 蜂巢中的过滤器阵列
Apache配置单元表具有以下列定义:Hadoop 蜂巢中的过滤器阵列,hadoop,hive,hiveql,Hadoop,Hive,Hiveql,Apache配置单元表具有以下列定义: myvars:array<struct<index:bigint,value:string>> 如何将此数组过滤到“index”==2的所有元素 在JavaScript中,我将执行以下操作: myvars.filter(function(d){return d.index==2;}) 如何使用Apache Hive QL实现相同的结果,最好不使用横向视图?在Hive中,您有一组收集功能: Collection arra
myvars:array<struct<index:bigint,value:string>>
如何将此数组过滤到“index”==2的所有元素
在JavaScript中,我将执行以下操作:
myvars.filter(function(d){return d.index==2;})
如何使用Apache Hive QL实现相同的结果,最好不使用横向视图?在Hive中,您有一组收集功能:
Collection
array_contains(Array<T> a, val)
array<K.V> map_keys(Map<K.V> a)
array<K.V> map_values(Map<K.V> a)
size(Map<K.V>|Array<T> a)
sort_array(Array<T> a)
我认为,如果您试图提取索引为2的所有值,您需要如下内容:
SELECT DISTINCT value
FROM mytable
LATERAL VIEW EXPLODE(myvars) exploded_myvars AS idx, value
WHERE idx = 2;
如果数据类型改为array
,则会是
SELECT DISTINCT mv["value"]
FROM mytable
LATERAL VIEW EXPLODE(myvars) exploded_myvars AS mv
WHERE mv["index"] = 2;
我也有这个问题,你能找到解决办法吗?请让我知道第一个链接不是重复的,因为这是嵌套结构,不是平面数组。第二个链接的页面似乎被破坏了…为我工作!谢谢
SELECT DISTINCT value
FROM mytable
LATERAL VIEW EXPLODE(myvars) exploded_myvars AS idx, value
WHERE idx = 2;
SELECT DISTINCT mv["value"]
FROM mytable
LATERAL VIEW EXPLODE(myvars) exploded_myvars AS mv
WHERE mv["index"] = 2;