我正在使用 JDBC 客户端代码连接到配置单元安装。我创建了一个包含两列(column1,column2)的测试表,它们都是字符串类型。当我尝试执行像“select * from test”这样的简单查询时,我会在java程序中得到结果,但是带有where子句和其他复杂查询的查询会引发以下异常。
“查询返回非零代码:1,原因:失败:执行错误,从 org.apache.hadoop.hive.ql.exec.MapRedTask 返回代码 1”
我尝试更改存在文件的 hdfs 目录的权限,本地目录上的 /tmp 但这不起作用。
这是我的连接代码
Connection con = DriverManager.getConnection("jdbc:hive://"+host+":"+port+"/default", "", "");
Statement stmt = con.createStatement();
executeQuery()方法抛出错误
检查服务器上的日志会出现以下异常:
java.io.IOException:无法初始化集群。请检查您的配置以获取 mapreduce.framework.name 和相应的服务器地址。在 org.apache.hadoop.mapreduce.Cluster.initialize(Cluster.java:121) 在 org.apache.hadoop.mapreduce.Cluster.(Cluster.java:83) 在 org.apache.hadoop.mapreduce.Cluster.(Cluster .java:76) 在 org.apache.hadoop.mapred.JobClient.init(JobClient.java:478) 在 org.apache.hadoop.mapred.JobClient.(JobClient.java:457) 在 org.apache.hadoop.hive .ql.exec.ExecDriver.execute(ExecDriver.java:426) 在 org.apache.hadoop.hive.ql.exec.MapRedTask.execute(MapRedTask.java:138) 在 org.apache.hadoop.hive.ql.exec .Task.executeTask(Task.java:138) 在 org.apache.hadoop.hive.ql.exec.TaskRunner.runSequential(TaskRunner.java:57) 在 org.apache.hadoop.hive.ql.Driver。
查询在命令提示符下运行时有效,但在 JDBC 客户端中无效。
我坚持这一点。任何的意见都将会有帮助。
更新
我正在使用 cloudera CDH4 hadoop/hive 发行版。我运行的脚本如下
#!/bin/bash
HADOOP_HOME=/usr/lib/hadoop/client
HIVE_HOME=/usr/lib/hive
echo -e '1\x01foo' > /tmp/a.txt
echo -e '2\x01bar' >> /tmp/a.txt
HADOOP_CORE={{ls $HADOOP_HOME/hadoop*core*.jar}}
CLASSPATH=.:$HADOOP_CORE:$HIVE_HOME/conf
for i in ${HIVE_HOME}/lib/*.jar ; do
CLASSPATH=$CLASSPATH:$i
done
for i in ${HADOOP_HOME}/*.jar ; do
CLASSPATH=$CLASSPATH:$i
done
java -cp $CLASSPATH com.hive.test.HiveConnect
我已将HADOOP_CORE={{ls $HADOOP_HOME/hadoop-*-core.jar}}更改为HADOOP_CORE={{ls $HADOOP_HOME/hadoop*core*.jar}}因为我的 hadoop_home 中没有以 hadoop- 开头的 jar 文件并以 -core.jar 结尾。这个对吗?运行脚本也会出现以下错误
/usr/lib/hadoop/client/hadoop*core*.jar}}:没有这样的文件或目录
我还修改了脚本以将 hadoop 客户端 jar 添加到类路径,因为脚本抛出了 hadoop fileReader not found 的错误。所以我也添加了以下内容。对于我在 ${HADOOP_HOME}/*.jar 中;做 CLASSPATH=$CLASSPATH:$i 完成
这将执行类文件并运行查询“select * from test”,但在“select column1 from test”上失败。
仍然没有成功和同样的错误。