我使用serde读取具有分隔符||
的特定格式的数据,而像|||
这样的可重复管道将永远不会出现在我的数据字符串中。我的数据正则表达式用于hive serde中的多分隔符字符串
一号线可能看起来魔神:aaa||bbb||ccc||ddd
,我创建蜂巢表如下:
CREATE TABLE test_log(
host STRING,
identity STRING,
user STRING,
time STRING)
ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
"input.regex" = "([^\\|]*)\\|{2}([^\\|]*)\\|{2}([^\\|]*)\\|{2}([^\\|]*)",
"output.format.string" = "%1$s %2$s %3$s %4$s")
STORED AS TEXTFILE;
它似乎罚款来读取数据,但显然input.regex
不完全正确的,当人脸一些数据如:a|bc||edf||g|g||ghi
。我试图在“掌握正则表达式”一书中找到帮助,但它没有奏效。
是否有可能读取和提取上述格式的数据只是与特定的input.regex
?
此模式也可以正常工作。 :) – youlingman
我很高兴你喜欢它:) – kol