Hive через Tez через Hive JDBC — ошибка

Я использую Hortonworks Hadoop HDP-2.3.2.0-2950 Hive поверх механизма Tez.

Ниже 2 запроса из кода Java.

  • select * from ascii -- работает хорошо
  • select count(*) from ascii or select count(1) from ascii -- завершается с ошибкой

Мой код:

package com.hadoop.hive;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
/**
 * 
 * @author hdpadmin
 *
 */
public class HiveReadJDBCMain {
        private static String driverName = "org.apache.hive.jdbc.HiveDriver";

        /**
         * @param args
         * @throws SQLException
         */
        public static void main(String[] args) throws SQLException {
                Connection con = null;
                PreparedStatement pst = null;
                ResultSet  res = null;

                try {

                        // Load Hive Driver Clazz
                        Class.forName(driverName);
                        // No username and password required.(running in a local machine)
                        con = DriverManager.getConnection("jdbc:hive2://localhost:10000/labs");
                        //Connection con = DriverManager.getConnection("jdbc:hive2://localhost:10000/labs", "<Username>", "<Password>");
                        String tableName = "ascii";
                        // select * query
                        String sql = "select * from " + tableName;
                        System.out.println("Select Query Running: " + sql);
                        pst = con.prepareStatement(sql);
                        res = pst.executeQuery();
                        while (res.next()) {
                                System.out.println(String.valueOf(res.getInt(1)) + "\t" + res.getString(2));
                        }
                        pst.close();
                        res.close();

                        // regular hive query
                        sql = "select count(*) from " + tableName;
                        System.out.println("Count Query Running: " + sql);
                        pst = con.prepareStatement(sql);
                        res = pst.executeQuery();
                        while (res.next()) {
                                System.out.println(res.getString(1));
                        }
                } catch (ClassNotFoundException e) {
                        e.printStackTrace();
                        System.exit(1);
                } catch (Exception e) {
                        e.printStackTrace();
                        System.exit(1);
                } finally {
                        res.close();
                        pst.close();
                        con.close();
                }
        }
}

Error
java.sql.SQLException: Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.tez.TezTask
        at org.apache.hive.jdbc.HiveStatement.execute(HiveStatement.java:282)
        at org.apache.hive.jdbc.HiveStatement.executeQuery(HiveStatement.java:378)
        at org.apache.hive.jdbc.HivePreparedStatement.executeQuery(HivePreparedStatement.java:109)
        at com.hadoop.hive.HiveReadJDBCMain.main(HiveReadJDBCMain.java:48)

person Narayana Basetty    schedule 31.10.2015    source источник


Ответы (3)


Да, я исправил, передав нижеприведенные объекты подключения с моим именем пользователя. Спасибо.... :)

con = DriverManager.getConnection("jdbc:hive2://localhost:10000/labs", "hdpadmin","");
person Narayana Basetty    schedule 31.10.2015
comment
добавление имени пользователя исправило вашу ошибку? Я застрял с той же ошибкой. Отметьте меня, если найдете решение. И да, я добавил имя пользователя и все еще получаю сообщение об ошибке - person Saurab; 10.07.2017

я также исправил, передав имя пользователя в строке подключения. Спасибо :)

person Richa    schedule 18.05.2016

Если вы используете AWS Hive JDBC для связи с кластером EMR по умолчанию, следующая настройка в Intellij сработала для менявведите здесь описание изображения

Хитрость заключалась в использовании пользователя hadoop

person Antonio Gomez Alvarado    schedule 12.12.2019