情況如下:
在程式中進行回圈hive查詢,一個回圈中有十幾條hive sql查詢陳述句,回圈100次左右。這十幾條sql我也都在hive shell中進行驗證過了,執行都沒有問題。但是在回圈執行程序就會隨機出現下列例外:
Cause: java.sql.SQLException: 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
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:1762)
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 []; 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
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:1762)
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)
; nested exception is java.sql.SQLException: 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
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:1762)
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)
而且出現的位置也不確定。例如:有時會在第三個回圈的第5條sql出現這個例外,有時候會在第7個回圈中第6sql中出現這個例外。。
去查看hive日志檔案,也是出現上述的例外,不知道是什么原因造成的。
一般還會伴隨著socket close 例外:如下
17:25:06,418 WARN ProxyConnection:161 - HikariPool-2 - Connection org.apache.hive.jdbc.HiveConnection@724b7a33 marked as broken because of SQLSTATE(08S01), ErrorCode(0)
java.sql.SQLException: org.apache.thrift.transport.TTransportException: java.net.SocketException: Socket closed
at org.apache.hive.jdbc.HiveStatement.waitForOperationToComplete(HiveStatement.java:399)
at org.apache.hive.jdbc.HiveStatement.execute(HiveStatement.java:254)
at org.apache.hive.jdbc.HivePreparedStatement.execute(HivePreparedStatement.java:101)
at com.zaxxer.hikari.pool.ProxyPreparedStatement.execute(ProxyPreparedStatement.java:44)
at com.zaxxer.hikari.pool.HikariProxyPreparedStatement.execute(HikariProxyPreparedStatement.java)
at sun.reflect.GeneratedMethodAccessor94.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.ibatis.logging.jdbc.PreparedStatementLogger.invoke(PreparedStatementLogger.java:59)
at com.sun.proxy.$Proxy172.execute(Unknown Source)
at org.apache.ibatis.executor.statement.PreparedStatementHandler.query(PreparedStatementHandler.java:63)
at org.apache.ibatis.executor.statement.RoutingStatementHandler.query(RoutingStatementHandler.java:79)
at org.apache.ibatis.executor.SimpleExecutor.doQuery(SimpleExecutor.java:63)
at org.apache.ibatis.executor.BaseExecutor.queryFromDatabase(BaseExecutor.java:324)
at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:156)
at org.apache.ibatis.executor.BaseExecutor.query(BaseExecutor.java:136)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:148)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:141)
at org.apache.ibatis.session.defaults.DefaultSqlSession.selectList(DefaultSqlSession.java:136)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.mybatis.spring.SqlSessionTemplate$SqlSessionInterceptor.invoke(SqlSessionTemplate.java:433)
at com.sun.proxy.$Proxy126.selectList(Unknown Source)
at org.mybatis.spring.SqlSessionTemplate.selectList(SqlSessionTemplate.java:222)
at com.umi.ga.analysis.dao.DailyAnalysisDao.hiveSelectChannels(DailyAnalysisDao.java:40)
at com.umi.ga.service.clientInterface.impl.HadoopLogDailyAnalysisServiceImpl.hiveSelectChannels(HadoopLogDailyAnalysisServiceImpl.java:117)
求大佬解救啊,已經折磨我一個多星期了。。
uj5u.com熱心網友回復:
建議粘貼代碼。。。。uj5u.com熱心網友回復:
懷疑資料庫操作例外時資料庫連接被關閉了,從連接池再次拿到的連接因為已關閉,所以導致資料庫連接不上。uj5u.com熱心網友回復:
使用的時HiKari連接的hIve,HiKari配置如下:
<bean id="hiveDataSource" class="com.zaxxer.hikari.HikariDataSource">
<property name="jdbcUrl" value="https://bbs.csdn.net/topics/${hive.url}"/>
<property name="username" value="https://bbs.csdn.net/topics/${hive.username}"/>
<property name="password" value="https://bbs.csdn.net/topics/${hive.password}"/>
<!-- 連接只讀資料庫時配置為true, 保證安全 -->
<property name="readOnly" value="https://bbs.csdn.net/topics/false"/>
<property name="connectionTimeout" value="https://bbs.csdn.net/topics/30000"/>
<!-- <property name="idletimeout" value="https://bbs.csdn.net/topics/600000"/>-->
<property name="idleTimeout" value="https://bbs.csdn.net/topics/1200000"/>
<property name="maxLifetime" value="https://bbs.csdn.net/topics/1200000"/>
<property name="maximumPoolSize" value="https://bbs.csdn.net/topics/180"/>
<property name="minimumIdle" value="https://bbs.csdn.net/topics/100"/>
</bean>
uj5u.com熱心網友回復:
代碼其實很簡單,就當成是一個100層的回圈,每個回圈中有10個hive查詢,沒有涉及到其他操作,就只是查詢。資料庫連接用的Hikari,框架用的spring boot + mybatis plus
uj5u.com熱心網友回復:
我也想過這個原因,但是不知道怎么弄,大佬這個應該怎么解決啊
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/141083.html
標籤:Java EE
上一篇:大家討論下這個錯誤
