hive - Split功能中的正则表达式不提供输出

时间:2015-04-29 16:11:53

标签: hadoop hive hiveql

输入:

[a,b], [c,d], [e,f]
select split(col,'\\,') from table_1; 

通过上面的查询,我可以分割每个逗号。 (大括号内外)

我只需要在大括号外的逗号上拆分。所以我改变了下面的查询。

select split(col,',(?=\[)') from table_1;
我使用的正则表达式是正确的,但我无法获得输出。

需要输出:

"[a,b]","[c,d]","[e,f]" 

1 个答案:

答案 0 :(得分:1)

看起来您的数据之间存在空格,因此请尝试使用此正则表达式:

,\\s(?=\\[)

编辑:

所以,我不确定列中是否有空格,所以这两个都是:

案例1 :列中没有空格

hive> describe a;
OK
t                       string

hive> select * from a;
OK
[a,b],[c,d],[e,f]
Time taken: 0.089 seconds, Fetched: 1 row(s)

hive> select split(t, ',(?=\\[)') from a;
OK
["[a,b]","[c,d]","[e,f]"]
Time taken: 0.081 seconds, Fetched: 1 row(s)

案例2 :列中有空格

hive> describe b;
OK
t                       string              

hive> select * from b;
OK
[a,b], [c,d], [e,f]
Time taken: 0.084 seconds, Fetched: 1 row(s)

hive> select split(t, ',\\s(?=\\[)') from b;
OK
["[a,b]","[c,d]","[e,f]"]
Time taken: 0.082 seconds, Fetched: 1 row(s)