无法使用 Hive Regex Serde 解析字符串
Unable to Parse string using Hive Regex Serde
我正在尝试解析一个字符串:
"297","298","Y","","299"
使用 Regexp serder,但我无法这样做。
我创建的 Table 定义是:
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 属性中使用的正则表达式在正则表达式测试网站上看起来很有前途,但我在尝试阅读 table 时遇到异常,请帮助我解决这个问题。
我知道这可以使用 csv serde 轻松完成,但我试图找出我必须使用 regexp serde 的问题的更大部分
谢谢
在正则表达式中,它应该是每列捕获组。
您的数据包含 5 列和 table 4,您想跳过一列,对吗?
例如这个正则表达式可以工作:with serdeproperties ('input.regex' = '^"(.*?)","(.*?)","(.*?)",.*?,"(.*?)"$')
无需创建 table 即可轻松检查,如下所示:
select regexp_replace('"297","298","Y","","299"','^"(.*?)","(.*?)","(.*?)",.*?,"(.*?)"$','|||');
OK
_c0
297|298|Y|299
select regexp_replace('"297","298","Y","this column is skipped","299"','^"(.*?)","(.*?)","(.*?)",.*?,"(.*?)"$','|||');
OK
_c0
297|298|Y|299
我正在尝试解析一个字符串:
"297","298","Y","","299"
使用 Regexp serder,但我无法这样做。 我创建的 Table 定义是:
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 属性中使用的正则表达式在正则表达式测试网站上看起来很有前途,但我在尝试阅读 table 时遇到异常,请帮助我解决这个问题。 我知道这可以使用 csv serde 轻松完成,但我试图找出我必须使用 regexp serde 的问题的更大部分 谢谢
在正则表达式中,它应该是每列捕获组。 您的数据包含 5 列和 table 4,您想跳过一列,对吗?
例如这个正则表达式可以工作:with serdeproperties ('input.regex' = '^"(.*?)","(.*?)","(.*?)",.*?,"(.*?)"$')
无需创建 table 即可轻松检查,如下所示:
select regexp_replace('"297","298","Y","","299"','^"(.*?)","(.*?)","(.*?)",.*?,"(.*?)"$','|||');
OK
_c0
297|298|Y|299
select regexp_replace('"297","298","Y","this column is skipped","299"','^"(.*?)","(.*?)","(.*?)",.*?,"(.*?)"$','|||');
OK
_c0
297|298|Y|299