Hive正则表达式将字符串拆分为两个不同的字段

时间:2015-07-29 01:45:25

标签: regex hadoop hive

我的记录如下:

0x0

我正在搜索一个正则表达式,我可以将前3个char 000110PPPP111KZY0拆分为hive表中的一个字段,其余{{1}}放入第二个字段,依此类推固定长度文件,没有分隔符

2 个答案:

答案 0 :(得分:1)

我没有使用过hadoop或hive的经验,但是以下的正则表达式将与我相信你正在寻找的东西一起使用。

/(\dx\d)(.*)/这将捕获/分割0x0到第一个捕获组,然后将所有内容捕获到第二个捕获组。如果您只想要0x0号码后面的数字/字母(所以没有H123456789或尾随的单词和字母),请使用/(\dx\d)([^ ]*)/

如果我误解了您正在寻找的内容,您是否可以澄清您提供的代码的确切部分,以便您选择和/或捕获?谢谢!

答案 1 :(得分:0)

OrderId | ProductId | Amount
----------------------------
      1 |         1 |      2
      1 |         7 |      1
      1 |         2 |      5
      4 |         4 |      3
      4 |         1 |      2
      8 |         4 |      1
      8 |         9 |      2

此代码返回一个包含两个字段的Hive行:

Select 
  regexp_extract(data, '^(\\dx\\d).*', 1), 
  regexp_extract(data, '^\\dx\\d(.*)', 1) 
from (Select '0x0000110PPPP111KZY0 ' as data) a;