我在Hive中寻找内置的String拆分功能? 例如。如果String是
A | B | C | d |电子
然后我想要一个像这样的功能 数组拆分(字符串输入,字符分隔符)
以便我回来[A,B,C,D,E]。
Hive中是否存在这样的内置拆分功能。 我只能看到regexp_extract和regexp_replace。我很想看到indexOf()和split() 字符串函数。
由于
的Ajay
答案 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