我正在寻找Hive中的内置字符串拆分函数? 例如如果字符串是Hive是否具有字符串拆分功能?
A | B | C | d |电子
然后我想有像 阵列分裂的功能(字符串输入,字符分隔符)
使得我回来[A, B,C,d,E]。
Hive中是否存在这样的内置分割函数? 我只能看到regexp_extract和regexp_replace。我很想看到一个indexOf()和split() 字符串函数。
感谢
阿贾伊
我正在寻找Hive中的内置字符串拆分函数? 例如如果字符串是Hive是否具有字符串拆分功能?
A | B | C | d |电子
然后我想有像 阵列分裂的功能(字符串输入,字符分隔符)
使得我回来[A, B,C,d,E]。
Hive中是否存在这样的内置分割函数? 我只能看到regexp_extract和regexp_replace。我很想看到一个indexOf()和split() 字符串函数。
感谢
阿贾伊
确实存在着基于正则表达式的分裂功能。它没有列出in the tutorial,但它已被列入the language manual on the wiki:
split(string str, string pat)
Split str around pat (pat is a regular expression)
在你的情况下,分隔符“|
”具有特殊的含义为正则表达式,所以它应该是“\\|
”被称为。
在蜂巢分裂另一个有趣的用例时,例如,在表中的列ipname
有值“abc11.def.ghft.com”和你想拉“abc11”出:
SELECT split(ipname,'[\.]')[0] FROM tablename;
只是澄清了Bkkbrad给出的答案。
我试过这个建议,但它不适合我。
例如,
split('aa|bb','\\|')
制备:
["","a","a","|","b","b",""]
但是,
split('aa|bb','[|]')
产生所期望的结果:
["aa","bb"]
包含元字符'|'在方括号内使其按字面意思进行解释,而不是作为元字符。
对于正则表达式的这种行为的阐述,请参阅:http://www.regular-expressions.info/charclass.html
什么用分号?当我使用'\\;'时配置单元看到这里EOF ... – herder 2015-01-15 12:42:38
分号不在正则表达式元字符列表中(请参阅https://www.hscripts.com/tutorials/regular-expression/metacharacter-list.php)。因此,你应该能够使用';'代替 '\\;'。 – 2016-07-01 19:47:05