hive添加完hive.exec.stagingdir参数,有的SQL报FileNotFoundException错

本文探讨了Hive SQL在插入多级目录时遇到的问题及解决方法。当使用特定参数配置时,Hive SQL可能无法正确创建多级目录进行数据插入。通过调整hive.insert.into.multilevel.dirs参数,可以确保SQL执行成功。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



事件: 在调整参数hive.exec.stagingdir之后,有的SQL报错,有的SQL可以正常运行。

 

   截屏如下:

|

处理方法:

<property>        

     <name>hive.insert.into.multilevel.dirs</name>        

   <value>true</value>    

</property>

 

原因:当hive.insert.into.mulltilevel.dirs设置成false的时候,insert 目标目录的上级目录必须存在。

如insert overwrite into directory '/user/data/pv/20160901/00/' select XXX from xxx where dt='20160901' and hour='00' 时,只存在/user/data/pv 目录,不存在20160901/00/ 目录。当hive.insert.into.mulltilevel.dirs设置成false的时候,insert 相当于只能建立目标目录,所以会失败。

以前不会失败的原因是,当hive.exec.stagingdir设置为.hive-staging时,由于临时目录在目标目录下面,所以创建临时目录时,会先创建目标目录,不存在目标目录不存在的问题。

Traceback (most recent call last): File "/data/scripts/python/cold_data_opr/utils/compress_handler.py", line 55, in <module> main() ~~~~^^ File "/data/scripts/python/cold_data_opr/utils/compress_handler.py", line 51, in main ch.compress('default.small_file_sum', None) ~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/data/scripts/python/cold_data_opr/utils/compress_handler.py", line 44, in compress self.he.exec(self.sqls[self.INSERT_OVERWRITE_TABLE] % (temp_table, fields[0][0], table)) ~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/data/scripts/python/cold_data_opr/utils/sql_exec.py", line 38, in exec cursor.execute(sql) ~~~~~~~~~~~~~~^^^^^ File "/data/scripts/python/cold_data_opr/venv/lib/python3.13/site-packages/pyhive/hive.py", line 481, in execute _check_status(response) ~~~~~~~~~~~~~^^^^^^^^^^ File "/data/scripts/python/cold_data_opr/venv/lib/python3.13/site-packages/pyhive/hive.py", line 611, in _check_status raise OperationalError(response) pyhive.exc.OperationalError: TExecuteStatementResp(status=TStatus(statusCode=3, infoMessages=['*org.apache.hive.service.cli.HiveSQLException:Error while processing statement: FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask:28:27', 'org.apache.hive.service.cli.operation.Operation:toSQLException:Operation.java:380', 'org.apache.hive.service.cli.operation.SQLOperation:runQuery:SQLOperation.java:257', 'org.apache.hive.service.cli.operation.SQLOperation:runInternal:SQLOperation.java:293', 'org.apache.hive.service.cli.operation.Operation:run:Operation.java:320', 'org.apache.hive.service.cli.session.HiveSessionImpl:executeStatementInternal:HiveSessionImpl.java:530', 'org.apache.hive.service.cli.session.HiveSessionImpl:executeStatement:HiveSessionImpl.java:506', 'sun.reflect.GeneratedMethodAccessor208:invoke::-1', 'sun.reflect.DelegatingMethodAccessorImpl:invoke:DelegatingMethodAccessorImpl.java:43', 'java.lang.reflect.Method:invoke:Method.java:497', 'org.apache.hive.service.cli.session.HiveSessionProxy:invoke:HiveSessionProxy.java:78', 'org.apache.hive.service.cli.session.HiveSessionProxy:access$000:HiveSessionProxy.java:36', 'org.apache.hive.service.cli.session.HiveSessionProxy$1:run:HiveSessionProxy.java:63', 'java.security.AccessController:doPrivileged:AccessController.java:-2', 'javax.security.auth.Subject:doAs:Subject.java:422', 'org.apache.hadoop.security.UserGroupInformation:doAs:UserGroupInformation.java:1878', 'org.apache.hive.service.cli.session.HiveSessionProxy:invoke:HiveSessionProxy.java:59', 'com.sun.proxy.$Proxy48:executeStatement::-1', 'org.apache.hive.service.cli.CLIService:executeStatement:CLIService.java:280', 'org.apache.hive.service.cli.thrift.ThriftCLIService:ExecuteStatement:ThriftCLIService.java:531', 'org.apache.hive.service.rpc.thrift.TCLIService$Processor$ExecuteStatement:getResult:TCLIService.java:1437', 'org.apache.hive.service.rpc.thrift.TCLIService$Processor$ExecuteStatement:getResult:TCLIService.java:1422', 'org.apache.thrift.ProcessFunction:process:ProcessFunction.java:39', 'org.apache.thrift.TBaseProcessor:process:TBaseProcessor.java:39', 'org.apache.hive.service.auth.TSetIpAddressProcessor:process:TSetIpAddressProcessor.java:56', 'org.apache.thrift.server.TThreadPoolServer$WorkerProcess:run:TThreadPoolServer.java:286', 'java.util.concurrent.ThreadPoolExecutor:runWorker:ThreadPoolExecutor.java:1142', 'java.util.concurrent.ThreadPoolExecutor$Worker:run:ThreadPoolExecutor.java:617', 'java.lang.Thread:run:Thread.java:745'], sqlState='08S01', errorCode=2, errorMessage='Error while processing statement: FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask'), operationHandle=None) 能看出来为啥不?
最新发布
06-12
了这个Error while compiling statement: FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.tez.TezTask. Vertex failed, vertexName=Map 3, vertexId=vertex_1742903658747_0760_9_01, diagnostics=[Vertex vertex_1742903658747_0760_9_01 [Map 3] killed/failed due to:ROOT_INPUT_INIT_FAILURE, Vertex Input: b initializer failed, vertex=vertex_1742903658747_0760_9_01 [Map 3], java.lang.RuntimeException: ORC split generation failed with exception: java.io.IOException: java.io.FileNotFoundException: File hdfs://nameservice-uat/apps/ratan/ratan_app/ratan_bcdf_trade_app/dt=20230501/tpsystem=MUREX/product=CRD/status=LIVE does not exist. at org.apache.hadoop.hive.ql.io.orc.OrcInputFormat.generateSplitsInfo(OrcInputFormat.java:1943) at org.apache.hadoop.hive.ql.io.orc.OrcInputFormat.getSplits(OrcInputFormat.java:2030) at org.apache.hadoop.hive.ql.io.HiveInputFormat.addSplitsForGroup(HiveInputFormat.java:542) at org.apache.hadoop.hive.ql.io.HiveInputFormat.getSplits(HiveInputFormat.java:850) at org.apache.hadoop.hive.ql.exec.tez.HiveSplitGenerator.initialize(HiveSplitGenerator.java:250) at org.apache.tez.dag.app.dag.RootInputInitializerManager.lambda$runInitializer$3(RootInputInitializerManager.java:203) 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:1898) at org.apache.tez.dag.app.dag.RootInputInitializerManager.runInitializer(RootInputInitializerManager.java:196) Vertex killed, vertexName=Reducer 2, vertexId=vertex_1742903658747_0760_9_02, diagnostics=[Vertex received Kill in INITED state., Vertex vertex_1742903658747_0760_9_02 [Reducer 2] killed/failed due to:OTHER_VERTEX_FAILURE]DAG did not succeed due to VERTEX_FAILURE. failedVertices:1 killedVertices:1
03-27
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值