过滤蜂巢

时间:2017-07-12 18:35:38

标签: hadoop filter hive user-defined-functions

我有一个hive表演示(id bigint,items string),其中dataset是一个逗号分隔的字符串集,如

id  dataset 
1   ,2,asd,as,a,1 
2   sda,saa,2,fds 

是否有一种原生方式我可以过滤掉非数字字符串,只保留数字字符串而不是爆炸表,过滤然后分组或编写我自己的UDF。

id  dataset 
1   2,1 
2   2

2 个答案:

答案 0 :(得分:1)

select  id
       ,regexp_replace(regexp_replace(dataset,'(?<=^|,)((\\d+)|([^,]*))(?=,|$)','$2'),'^,+|,+$|(,)+','$1')

from    demo
;
+----+-----+
| id | c1  |
+----+-----+
|  1 | 2,1 |
|  2 | 2   |
+----+-----+

答案 1 :(得分:0)

尝试这样的正则表达式:

select id
  ,regexp_replace(dataset, '(,[a-zA-Z]+|^,|[a-zA-Z]+,)' , '') as dataset
 from yourdata;

这导致:

id dataset
1 2,1
2 2