Hive是否具有String拆分功能?

时间:2010-11-01 00:54:09

标签: hadoop hive

我在Hive中寻找内置的String拆分功能? 例如。如果String是

A | B | C | d |电子

然后我想要一个像这样的功能 数组拆分(字符串输入,字符分隔符)

以便我回来[A,B,C,D,E]。

Hive中是否存在这样的内置拆分功能。 我只能看到regexp_extract和regexp_replace。我很想看到indexOf()和split() 字符串函数。

由于

的Ajay

3 个答案:

答案 0 :(得分:49)

确实存在基于正则表达式的分割函数。它没有列出in the tutorial,但列在the language manual on the wiki上:

split(string str, string pat)
   Split str around pat (pat is a regular expression) 

在您的情况下,分隔符“|”具有作为正则表达式的特殊含义,因此应将其称为“\\|”。

答案 1 :(得分:38)

在Hive中拆分的另一个有趣的用例是,例如,表中的列ipname具有值“abc11.def.ghft.com”并且您想要拉出“abc11”:

SELECT split(ipname,'[\.]')[0] FROM tablename;

答案 2 :(得分:5)

只是澄清了Bkkbrad给出的答案。

我尝试了这个建议,但它对我不起作用。

例如,

split('aa|bb','\\|')

制备:

["","a","a","|","b","b",""]

但是,

split('aa|bb','[|]')

产生了预期的结果:

["aa","bb"]

包括元字符' |'方括号内部使其按字面意思解释,而不是作为元字符。

有关regexp的此行为的详细说明,请参阅:http://www.regular-expressions.info/charclass.html