Hadoop 以TEZ作为执行引擎的PutHiveQl处理器有时会失败

Hadoop 以TEZ作为执行引擎的PutHiveQl处理器有时会失败,hadoop,hive,yarn,apache-nifi,apache-tez,Hadoop,Hive,Yarn,Apache Nifi,Apache Tez,nifi app.log中的错误: > ERROR [Timer-Driven Process Thread-3] o.apache.nifi.processors.hive.PutHiveQL > PutHiveQL[id=1a203b03-0311-192f-b7a1-9959aea10e41] Failed to update > Hive for > StandardFlowFileRecord[uuid=e2f0dc1f-9a86-40c7-a37a-1

nifi app.log中的错误

>     ERROR [Timer-Driven Process Thread-3] o.apache.nifi.processors.hive.PutHiveQL
> PutHiveQL[id=1a203b03-0311-192f-b7a1-9959aea10e41] Failed to update
> Hive for
> StandardFlowFileRecord[uuid=e2f0dc1f-9a86-40c7-a37a-17926367fc19,claim=StandardContentClaim
> [resourceClaim=StandardResourceClaim[id=1581674370847-15,
> container=default, section=15], offset=8465,
> length=381],offset=0,name=eacbb330-2aa1-44f2-96e2-74675fc91263_toto_20190809150423.csv,size=381]
> due to java.sql.SQLException: Error while processing statement:
> FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.tez.TezTask; it is 
> possible that retrying the operation will succeed, so routing to retry:
> java.sql.SQLException: Error while processing statement: FAILED:
> Execution Error, return code 1 from
> org.apache.hadoop.hive.ql.exec.tez.TezTask
>     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.waitForOperationToComplete(HiveStatement.java:401)
>             at org.apache.hive.jdbc.HiveStatement.execute(HiveStatement.java:266)
>             at org.apache.hive.jdbc.HivePreparedStatement.execute(HivePreparedStatement.java:101)
>             at org.apache.commons.dbcp.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:172)
>             at org.apache.commons.dbcp.DelegatingPreparedStatement.execute(DelegatingPreparedStatement.java:172)
>             at org.apache.nifi.processors.hive.PutHiveQL.lambda$null$3(PutHiveQL.java:254)
>             at org.apache.nifi.processor.util.pattern.ExceptionHandler.execute(ExceptionHandler.java:127)
>             at org.apache.nifi.processors.hive.PutHiveQL.lambda$new$4(PutHiveQL.java:226)
>             at org.apache.nifi.processor.util.pattern.Put.putFlowFiles(Put.java:59)
>             at org.apache.nifi.processor.util.pattern.Put.onTrigger(Put.java:102)
>             at org.apache.nifi.processors.hive.PutHiveQL.lambda$onTrigger$6(PutHiveQL.java:295)
>             at org.apache.nifi.processor.util.pattern.PartialFunctions.onTrigger(PartialFunctions.java:114)
>             at org.apache.nifi.processor.util.pattern.RollbackOnFailure.onTrigger(RollbackOnFailure.java:184)
>             at org.apache.nifi.processors.hive.PutHiveQL.onTrigger(PutHiveQL.java:295)
>             at org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1162)
>             at org.apache.nifi.controller.tasks.ConnectableTask.invoke(ConnectableTask.java:209)
>             at org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent$1.run(TimerDrivenSchedulingAgent.java:117)
>             at org.apache.nifi.engine.FlowEngine$2.run(FlowEngine.java:110)
>             at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
>             at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
>             at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
>             at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
>             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)
此错误在Nifi中发生,但在使用配置单元CLI时也会发生。简单的请求永远不会发生这种情况,复杂的查询有时也会发生这种情况。比如1个查询超过5个,这对我来说是随机的

流程:

处理器配置:

配置单元连接池配置:

查询:
insert into table Db_X.table_Y value(“string”、“string”、“string”、“string”string”)

jdbc url来自ambari,连接到beeline with时没有问题。

Kerberos在使用nifi或hiveCli时配置良好。

“返回代码1”实际上意味着“某个Thread容器中发生了一些事情,获取该Thread应用程序ID的日志并自行调试,duh”。Et TEZ n'est pas marrantádébugger。。。祝你勇敢。