3

我有一个查询。它在 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 脚本启动 Hive Thrift 服务器。(我编写了一个 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$

请帮我解决这个问题。谢谢

4

2 回答 2

1

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

于 2012-05-10T13:34:45.017 回答
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 的库中添加这个 jar,然后尝试代码。并将 hadoop、hive 和 hbase(如果您正在使用)lib 文件夹路径添加到项目类路径中,就像您添加了 jars 一样。

对于你得到的第二个错误

类型

**netstat -nl | grep 10000**

如果它显示某些东西意味着 hive 服务器已经在运行。只有当您指定的端口已被其他进程获取时,第二个错误才会出现,默认情况下,服务器端口是 10000,因此非常符合我所说的上述 netstat 命令。

注意:假设您已使用... bin/hive 的代码退出进行连接,如果您通过 bin/hive > 连接,则代码将无法连接,因为我认为(不确定)只有一个客户端可以连接到 hive 服务器。

执行上述步骤希望能解决您的问题。

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

于 2012-05-10T15:13:08.920 回答