Hive RegEx Serde不';t工作并加载为空
我正在尝试创建一个具有Serde Regex属性的配置单元表,以加载下面的文件 输入文件:Hive RegEx Serde不';t工作并加载为空,regex,hive,hive-serde,Regex,Hive,Hive Serde,我正在尝试创建一个具有Serde Regex属性的配置单元表,以加载下面的文件 输入文件: $ hdfs dfs -cat /user/t04413b/test.log {"repoType":3,"repo":"PROD_hive","reqUser":"shdingst","evtTime":"2020-06-09 01:01:23.308"} 配置单元创建表查询: create external table logs3 ( repo_type string, repo string,
$ hdfs dfs -cat /user/t04413b/test.log
{"repoType":3,"repo":"PROD_hive","reqUser":"shdingst","evtTime":"2020-06-09 01:01:23.308"}
配置单元创建表查询:
create external table logs3
(
repo_type string,
repo string,
requser string,
evttime string
)
row format serde 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
with serdeproperties (
"input.regex" = ":(.*),.*:(.*),.*:(.*),.*?:(.*)}.*"
)
stored as textfile;
将路径'/user/t04413b/test.log'中的数据加载到表logs3中
select * from logs3;
+------------------+-------------+----------------+----------------+--+
| logs3.repo_type | logs3.repo | logs3.requser | logs3.evttime |
+------------------+-------------+----------------+----------------+--+
| NULL | NULL | NULL | NULL |
我在Rubular.com上测试了regex,它工作得很好,但在SerDe regex中它不工作。
有人能帮忙解决吗?谢谢
'}'
是正则表达式中的特殊字符,需要屏蔽:
"input.regex" = "^.*:(.*),.*:(.*),.*:(.*),.*?:(.*)\\}.*"
欢迎来到stackoverflow。您可以使用倒勾来格式化代码,如下所示:``code```。这使问题更具可读性