Соединение Hive jdbc выдает ошибку, если задействован MR

Я работаю над соединением Hive-jdbc в HDP 2.1.

Код отлично работает для запросов, в которых не используется mapreduce, например «выбрать * из имени таблицы». Тот же код показывает ошибку, когда запрос изменяется с помощью предложения «где» или если мы указываем имена столбцов (которые будут запускать mapreduce в фоновом режиме).

Я проверил правильность запроса, выполнив его в HiveCLI. Также я проверил разрешения на чтение/запись для таблицы для пользователя, через которого я запускаю код java-jdbc.

Ошибка заключается в следующем

    java.sql.SQLException: Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
    at org.apache.hive.jdbc.HiveStatement.execute(HiveStatement.java:275)
    at org.apache.hive.jdbc.HiveStatement.executeQuery(HiveStatement.java:355)
    at com.testing.poc.hivejava.HiveJDBCTest.main(HiveJDBCTest.java:25)

person jintocvg    schedule 09.04.2015    source источник
comment
Просто чтобы уточнить, запуск одного и того же запроса через HiveCLI работает, а через драйвер JDBC - нет? И запрос HiveCLI также запускает задание MapReduce?   -  person KylePorter    schedule 10.04.2015
comment
Да, он запускает mapreduce сзади и работает нормально   -  person jintocvg    schedule 13.04.2015


Ответы (2)


Сегодня я также получил это исключение, когда отправляю задачу куста из java. Следующая ошибка:

org.apache.hive.jdbc.HiveDriverorg.apache.hive.jdbc.HiveDriverhive_driver:
org.apache.hive.jdbc.HiveDriverhive_url:jdbc:hive2://10.174.242.28:10000/defaultget 
connection sessucess获取hive连接成功!
java.sql.SQLException: Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask

Я попытался использовать sql-выполнение в улье, и он работает хорошо. Потом увидел лог в /var/log/hive/hadoop-cmf-hive-HIVESERVER2-cloud000.log.out потом нашел причину этой ошибки. Следующая ошибка:

Job Submission failed with exception 'org.apache.hadoop.security.AccessControlException(Permission denied: user=anonymous, access=WRITE, inode="/user":hdfs:supergroup:drwxr-xr-x

Решение

Я использовал следующую команду:

sudo -u hdfs hadoop fs -chmod -R 777  /

Это решило ошибку!

hive_driver:org.apache.hive.jdbc.HiveDriver
hive_url:jdbc:hive2://cloud000:10000/default
get connection sessucess
获取hive连接成功!
Heart beat
执行insert成功!
person 朱书利    schedule 18.05.2016

Если вы используете beeline для выполнения тех же запросов, вы видите такое же поведение, как при запуске вашей тестовой программы?

Клиент beeline также использует драйвер JDBC с открытым исходным кодом и подключается к серверу Hive, что аналогично тому, что вы делаете в своей программе. HiveCLI, с другой стороны, имеет встроенный Hive и по умолчанию не подключается к удаленному серверу Hive. Вы можете использовать HiveCLI для подключения к удаленному Hive Server 1, но я не думаю, что вы можете использовать его для подключения к Hive Server2 (используйте beeline для Hive Server 2).

Для этой ошибки вы можете взглянуть на hive.log и hiveserver2.log на стороне сервера, чтобы получить больше информации о том, что могло вызвать ошибку MapReduce.

Надеюсь это поможет.

Привет, Холман

person Holman    schedule 10.04.2015
comment
Кстати, Simba также обеспечивает подключение JDBC и ODBC к Hive simba.com/connectors. /apache-hadoop-hive-драйвер. Вы можете попробовать бесплатную пробную версию и получить поддержку, чтобы помочь с вашим POC. - person Holman; 10.04.2015