【发布时间】:2016-05-11 17:37:05
【问题描述】:
我需要从平面文件中读取数据。它包含许多行,但想从如下行中提取数据:
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';
它似乎不起作用并不断给出异常。有任何想法吗? 正则表达式可能是错误的,但我只是不知道
我可以稍后发布异常,目前无法访问集群
【问题讨论】:
-
通常使用双引号会涉及一些字符串转义。你试过
"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",还是只是逃避? -
\s 是我们想要使用的空间