Запросы Hive не выполняются в Tez, но выполняются в Map-Reduce при подключении из Beeline - PullRequest
0 голосов
/ 08 ноября 2019

У меня странная ошибка. Я выполняю простой запрос select * с предложением where, ниже приводится сводная информация о состоянии выполнения запроса

  1. Подключение к Hive из EMR (механизм Tez) - успешно
  2. Подключение к Hiveот EMR (двигатель MR) - успешно
  3. Подключение к Hive от Beeline (двигатель Tez) - сбой
  4. подключение к кусту от Beeline (двигатель MR) - успешно

Мне нужно решить для пункта 3. Это трассировка ошибок, которую я получаю и не могу найти причину этой ошибки и что этот журнал ошибок пытается передать.

    at org.apache.hive.service.cli.operation.Operation.toSQLException(Operation.java:380)
    at org.apache.hive.service.cli.operation.SQLOperation.runQuery(SQLOperation.java:257)
    at org.apache.hive.service.cli.operation.SQLOperation.access$800(SQLOperation.java:91)
    at org.apache.hive.service.cli.operation.SQLOperation$BackgroundWork$1.run(SQLOperation.java:348)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:422)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1840)
    at org.apache.hive.service.cli.operation.SQLOperation$BackgroundWork.run(SQLOperation.java:362)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)' SQL<select `ID`, `ISDELETED`, `ACCOUNTID`, `CREATEDBYID`, `CREATEDDATE`, `FIELD`, `OLDVALUE`, `NEWVALUE`, `AUDIT_UPD_TS`, `SRC_OP_TYP`, `GG_INGEST_TS` from `t4i_ent_sfdc_b2b_psa`.`sf_accounthistory` x WHERE SRC_OP_TYP='NA'>```

Ответы [ 2 ]

0 голосов
/ 15 ноября 2019

Попробуйте вызвать beeline (Tez engine), как показано ниже, а затем выполните свой запрос:

beeline -u "jdbc:hive2://<host>:<port>,/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2-batch?tez.queue.name=<yarn-queue-name>"

Если приведенное выше не работает, попробуйте исправить любую проблему в SQL. Я вижу 'x' перед предложением Where в вашем sql запросе, это может быть проблемой. Попробуйте удалить это и выполнить свой запрос.

`sf_accounthistory` x WHERE SRC_OP_TYP='NA'

Надеюсь, это полезно

0 голосов
/ 15 ноября 2019

Я смог решить это. Проблема заключалась в том, что я подключал свое приложение к Hive через JDBC без указания пользователя. Для запросов, где требовалась простая потоковая передача данных, это выполнялось успешно, но там, где запускались задания Map-Reduce для записи в HDFS, операция записи не выполнялась с ошибкой

Failed to execute tez graph.
    org.apache.hadoop.security.AccessControlException: Permission denied: user=anonymous, access=WRITE, inode="/user":hdfs:hadoop:drwxr-xr-x

Чтобы устранить эту проблему, ядобавил пользователя = hadoop;в URL JDBC, и теперь запросы выполняются нормально.

...