Hadoop Hive从数组中获取位置

时间:2016-11-09 21:10:12

标签: hadoop hive

我正在使用array_contains函数来查找数组中的项目,并且它运行良好。我正在寻找一个返回匹配的数组的索引。

 select b.sku_id
 ,array_position(b.sku_list, b.sku_id) as matched_index
 from
 (select split(the_list, ',') as sku_list, sku_id
 from data_table) b
 where array_contains(b.sku_list, b.sku_id) = TRUE;

这是我的错误:

,array_position(b.sku_list, b.sku_id) as matched_index

错误的原因是Hive中没有用于array_position的内置UDF。获取匹配值索引的任何解决方案?

2 个答案:

答案 0 :(得分:0)

hive本身不支持UDF索引。

但是,Brickhouse有一个array index of UDF。

答案 1 :(得分:0)

您可以使用hive-third-functions。它提供array_position和其他许多数组函数。