hadoop – Hive中的Filter Array

Apache配置单元表具有以下列定义:

myvars:array<struct<index:bigint,value:string>>

相应数据的示例是:

"myvars":[
  {"index":2,"value":"value1"}
  , {"index":1,"value":"value2"}
  , {"index":2,"value":"value3"}
]

如何将此数组过滤到“index”== 2的所有元素.

在JavaScript中我会做类似以下的事情:

myvars.filter(function(d){return d.index==2;})

如何使用Apache Hive QL获得相同的结果,最好没有横向视图?

最佳答案 在配置单元中,您有一组Collection函数:

 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)

在您的查询中使用

...
WHERE
array_contains(myvars,2) 
点赞