我试图分析一个字符串,它是:
“297”,“298”,“y”,“y”,“299”
使用regexp serder,但我不能这样做。我创建的表定义是:
create external table test.test1
(a string,
b string,
c string,
d string)
row format serde 'org.apache.hadoop.hive.serde2.RegexSerDe'
with serdeproperties ("input.regex" = "\"\"|\"([^\"]+)\"")
serde属性中使用的regex在regexp测试网站中看起来很有前途,但是我在尝试阅读表时遇到了一个异常,请在这方面帮助我。我知道使用csv-serde可以很容易地做到这一点,但是我正在尝试找出一个更大的问题,我必须使用regexp-serde
1条答案
按热度按时间cczfrluj1#
在regex中,它应该是每列捕获一个组。您的数据包含5列和表4,您想跳过一列,对吗?
例如,这个正则表达式将工作:
with serdeproperties ('input.regex' = '^"(.*?)","(.*?)","(.*?)",.*?,"(.*?)"$')
无需创建表即可轻松检查,如下所示: