0

我对 Hive 和 HDFS 还很陌生,但是我设法在 java 中创建了一个功能正常的 HiveClient,它成功地连接并在我的 HDFS 服务器上执行查询。也就是说,除了select语句之外的所有查询。

我的代码如下所示:

  Statement stmt;
  ResultSet res;
  try {
      stmt = con.createStatement();
       res = stmt.executeQuery("select * from my_table");
       while (res.next()) {
       System.out.println(res.getString(1));
       }

      res.close();
      stmt.close();
      con.close();
  } catch (SQLExceptionex) {
      ex.printStackTrace();
    }

当我运行它时,错误是这样的:

java.sql.SQLException:查询返回非零代码:9,原因:FAILED:执行错误,从org.apache.hadoop.hive.jdbc.HiveStatement.executeQuery(HiveStatement.java)的shark.execution.SparkTask返回代码-101 :194) 在 se.HiveClient.doQuery(HiveClient.java:56) 在 se.HiveClient.main(HiveClient.java:82)

但如果我改为创建表显示表,它运行完美。是否存在缺少配置或权限的情况?还是完全不同的东西?

任何关于我可能在哪里做错或错过了什么的想法都非常感谢。

4

1 回答 1

0

应该是权限问题。

创建表或显示表需要 hive 从其数据库中获取元数据。实际选择数据需要读取文件。检查授予文件的权限是什么。

Hive 可能会以 hive 用户的身份进行查询,因此要么应该是文件的所有者,要么应该在正确的组中。

这似乎是一个类似的问题:http ://forums.pentaho.com/archive/index.php/t-89586.html

于 2014-12-10T18:33:51.083 回答