【发布时间】:2017-10-02 22:06:03
【问题描述】:
我使用 serde 读取带有分隔符的特定格式的数据 |
我的一行数据可能看起来像:key1=value2|key2=value2|key3="va , lues",我创建的配置单元表如下:
CREATE EXTERNAL TABLE(
field1 STRING,
field2 STRING,
field3 STRING
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
"input.regex" = "([^\\|]*)\\|([^\\|]*)\\|([^\\|]*)",
"output.format.string" = "%1$s %2$s %3$s"
)
STORED AS TEXTFILE;
我需要提取所有值,忽略所有配额(如果存在)。 结果看起来像一个
value2 value2 va , lues
如何更改我当前的正则表达式以获取提取值?
【问题讨论】:
-
给定输入的当前输出结果是什么?
-
key1=value2 key2=value2 key3="va , lues"
-
所以改变这个:
"input.regex" = "[^\\|=]*=\"?([^\\|]*)\"?\\|[^\\|=]*=\"?([^\\|]*)\"?\\|[^\\|=]*=\"?([^\\|]*)\"?", -
用例看起来很奇怪。你怎么不需要钥匙?
-
@horcrux -
|可能包含在引用的值中
标签: regex hadoop hive hive-serde