Hive RegexSerDe没有提供正确的输出

时间:2014-12-01 10:12:29

标签: hadoop mapreduce hive bigdata

我的输入文本文件的数据为

0000856214AB25 256 T PL1423AS

2563458547CD12 748 S AK2523YU

在Regex查询下使用以获取输出

hive> CREATE TABLE test_regex(
>f1 STRING,f2 STRING,
>f3 STRING,f4 STRING,
>f5 STRING,f6 STRING,
>f7 STRING) ROW FORMAT SERDE 'org.apache.hadoop.hive.contrib.serde2.RegexSerDe' 
>WITH SERDEPROPERTIES ("input.regex" = 
>"([0-9]{10})([A-Z]{2})([0-9]{2})\\s+([0-9]{3})\\s+([A-Z]{1})\\s+([A-Z]{2})([A-Z0-9]{6})",
>"output.format.string" = "%1$s %2$s %3$s %4$s %5s %6s %7s")
>STORED AS TEXTFILE;

OutPut:

hive> select *from test_regex;

0000856214  AB  25  256 T   PL  1423AS

2563458547  CD  12  748 S   AK  2523YU

但是当我尝试使用以下查询获取输出时

Query: Select f1 from test_regex;
or     Select f1,f3,f5 from test_regex;

输出:错误

失败:执行错误,从org.apache.hadoop.hive.ql.exec.mr.MapRedTask返回代码2

` 。 。 有人可以帮我解决上述问题吗?

提前致谢。

1 个答案:

答案 0 :(得分:0)

这不是真正的错误,以下是如何找到它: 转到hadoop jobtracker web-dashboard,找到失败的hive mapreduce作业并查看失败任务的日志。这将显示真正的错误。

或 在tmp / user / hive.log中查看日志

由org.apache.hadoop.hive.contrib.serde2.RegexSerDe未找到

转到http://www.java2s.com/Code/Jar/h/Downloadhivecontrib081jar.htm

download jar hive-contrib-0.8.1.jar

然后在配置单元中,根据您的系统路径添加jar

 ADD JAR /home/user17/hive/hive-contrib-0.8.1.jar

select f1 from test_regex; 

输出

0000856214
2563458547