hive失败执行错误从org.apache.hadoop.hive.ql.exec.mapredtask返回代码2

时间:2012-05-10 10:40:09

标签: hadoop hive

我有一个查询。它在Hive CLI上正常执行并返回结果。但是当我在Hive JDBC的帮助下执行它时,我收到以下错误:

java.sql.SQLException: Query returned non-zero code: 9, cause: FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.MapRedTask
    at org.apache.hadoop.hive.jdbc.HiveStatement.executeQuery(HiveStatement.java:192)

有什么问题?我也是通过Shell Script启动Hive Thrift Server。 (我编写了一个shell脚本,它有命令启动Hive Thrift Server)后来我决定通过键入命令手动启动Hive thrift Server:

hadoop@ubuntu:~/hive-0.7.1$ bin/hive --service hiveserver
Starting Hive Thrift Server
org.apache.thrift.transport.TTransportException: Could not create ServerSocket on address 0.0.0.0/0.0.0.0:10000.
    at org.apache.thrift.transport.TServerSocket.<init>(TServerSocket.java:99)
    at org.apache.thrift.transport.TServerSocket.<init>(TServerSocket.java:80)
    at org.apache.thrift.transport.TServerSocket.<init>(TServerSocket.java:73)
    at org.apache.hadoop.hive.service.HiveServer.main(HiveServer.java:384)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.apache.hadoop.util.RunJar.main(RunJar.java:186)

hadoop@ubuntu:~/hive-0.7.1$

请帮帮我。 感谢

2 个答案:

答案 0 :(得分:1)

可能是一些权限问题,只需尝试一些查询,例如“SELECT * FROM”,它不会启动MR作业。

答案 1 :(得分:1)

对于此错误:
java.sql.SQLException: Query returned non-zero code: 9, cause: FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.MapRedTask at org.apache.hadoop.hive.jdbc.HiveStatement.executeQuer

转到此链接:

http://docs.amazonwebservices.com/ElasticMapReduce/latest/DeveloperGuide/UsingEMR_Hive.html

并添加

**hadoop-0.20-core.jar
hive/lib/hive-exec-0.7.1.jar
hive/lib/hive-jdbc-0.7.1.jar
hive/lib/hive-metastore-0.7.1.jar
hive/lib/hive-service-0.7.1.jar
hive/lib/libfb303.jar
lib/commons-logging-1.0.4.jar    
slf4j-api-1.6.1.jar
slf4j-log4j12-1.6.1.jar**

到项目的类路径,从hadoop和hive的lib中添加这个jar,然后尝试代码。并且还添加了hadoop,hive和hbase(如果你正在使用)lib文件夹路径到项目类路径的路径,就像你添加了jar一样。

和你得到的第二个错误

输入

**netstat -nl | grep 10000**

如果显示某些内容意味着hive服务器已在运行。只有当您指定的端口已被某个其他进程获取时,才会出现第二个错误,默认情况下,服务器端口为10000,因此我使用上述netstat命令。

注意:如果您通过bin / hive&gt;连接,假设您已使用代码退出来连接... bin / hive。然后代码将无法连接,因为我认为(不确定)只有一个客户端可以连接到配置单元服务器。

以上步骤有望解决您的问题。

注意:当您要执行代码时退出cli,并且在执行代码时不要启动cli。