gpt4 book ai didi

regex - Hive 正则表达式序列化

转载 作者:可可西里 更新时间:2023-11-01 16:26:33 32 4
gpt4 key购买 nike

我需要从平面文件中读取数据。它包含许多行,但想要从看起来像这样的行中提取数据:

REVISION 12 30364918 Anarchism 2005-12-06T17:44:47Z RJII 141644

我只想要这一行的第 2、3 和 5 个条目并将它们放入 Hive 表中;我已发出此命令但出现错误

create external table testTable (
tag string,
a string,
r string
)
row format SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
WITH SERDEPROPERTIES(
"input.regex" = "REVISION\s,[0-9]*,\s,[0-9]*,\s[a-zA-Z0-9]*\s,[0-9]*-[0-9]*-[0-9]*T[0-9]*:[0-9]*:[0-9]*Z",
"output.format.string" = "%1$s %2$s %3$s")
stored as textfile
location 'hdfs://location:8020/user/bd4-project1/enwiki-20080103-sample';

它似乎不起作用并且一直给出异常。有任何想法吗?正则表达式可能是错误的,但我就是不知道

我可以稍后发布异常,目前无法访问集群

最佳答案

我已经使用 Hive 0.10.0 对此进行了测试,它应该适合您。

create table ts_test2(
tag string,
a string,
r string
)
row format SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe'
WITH SERDEPROPERTIES(
"input.regex" = "REVISION ([0-9]+) ([0-9]+) [a-zA-Z0-9]+ ([0-9]+-[0-9]+-[0-9]+T[0-9]+:[0-9]+:[0-9]+[Z]) RJII [0-9]+$",
"output.format.string" = "%1$s %2$s %3$s");

一些注意事项:
1. 确保您的正则表达式完全正确以处理所有行,否则您将在配置单元表中得到NULL至少this 这样的地方测试正则表达式
2. 使用() 包裹你感兴趣的字段。
3.我用的是空格,你可以改成\s(或者\\s)。

关于regex - Hive 正则表达式序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20363890/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com