我的输入文本文件的数据为
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
` 。 。 有人可以帮我解决上述问题吗?
提前致谢。
答案 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