簡體   English   中英

Hive 查詢在 Tez 上失敗,但在從 Beeline 連接時在 Map-Reduce 上成功

[英]Hive queries failing on Tez but succeeding on Map-Reduce when connecting from Beeline

我遇到了一個奇怪的錯誤。 我正在運行一個帶有 where 子句的簡單 select * 查詢,以下是查詢執行狀態的摘要

  1. 從 EMR(Tez 引擎)連接到 Hive - 成功
  2. 從 EMR(MR 引擎)連接到 Hive - 成功
  3. 從直線(Tez 引擎)連接到 Hive - 失敗
  4. 從直線(MR 引擎)連接到 Hive - 成功

我需要解決第 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'>```

我能夠解決這個問題。 問題是我在沒有指定用戶的情況下通過 JDBC 將我的應用程序連接到 Hive。 對於需要簡單數據流的查詢,它是成功的,但是在觸發 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

為了解決這個問題,我添加了 user=hadoop; 在 JDBC URL 中,查詢現在運行良好。

嘗試如下調用beelineTez engine ),然后運行您的查詢:

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

如果上述方法不起作用,請嘗試修復 SQL 中的任何問題。 我在 sql 查詢中的 Where 子句之前看到“x”,這可能是問題所在。 嘗試刪除它並運行您的查詢。

`sf_accounthistory` x WHERE SRC_OP_TYP='NA'

希望這會有所幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM