Hive 查询在 Tez 上失败但在从 Beeline 连接时在 Map-Reduce 上成功
Hive queries failing on Tez but succeeding on Map-Reduce when connecting from Beeline
我 运行 遇到了一个奇怪的错误。我是 运行 一个简单的 select * 带 where 子句的查询,下面是查询执行状态的总结
- 从 EMR(Tez 引擎)连接到 Hive - 成功
- 从 EMR(MR 引擎)连接到 Hive - 成功
- 从 Beeline(Tez 引擎)连接到 Hive - 失败
- 从 Beeline(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.access0(SQLOperation.java:91)
at org.apache.hive.service.cli.operation.SQLOperation$BackgroundWork.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 和查询 运行 现在好了。
尝试如下调用 beeline
(Tez 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'
希望对您有所帮助
我 运行 遇到了一个奇怪的错误。我是 运行 一个简单的 select * 带 where 子句的查询,下面是查询执行状态的总结
- 从 EMR(Tez 引擎)连接到 Hive - 成功
- 从 EMR(MR 引擎)连接到 Hive - 成功
- 从 Beeline(Tez 引擎)连接到 Hive - 失败
- 从 Beeline(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.access0(SQLOperation.java:91)
at org.apache.hive.service.cli.operation.SQLOperation$BackgroundWork.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 和查询 运行 现在好了。
尝试如下调用 beeline
(Tez 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'
希望对您有所帮助