在doris3.1.3和doris4中,读取mysql数据写入到hive(底层使用oss或cos)时,会出现以下空指针异常错误:
mysql: [Warning] Using a password on the command line interface can be insecure.
Traceback (most recent call last):
File "/data/refactor/job/easy-bigdata/bin//doris_exec.py", line 66, in
execute_sql_file(args.file, args.mode)
File "/data/refactor/job/easy-bigdata/bin//doris_exec.py", line 45, in execute_sql_file
execute_update(sql_content)
File "/data/refactor/job/easy-bigdata/bin//doris_exec.py", line 38, in execute_update
cursor.execute(stmt.strip())
File "/usr/lib64/python2.7/site-packages/pymysql/cursors.py", line 163, in execute
result = self._query(query)
File "/usr/lib64/python2.7/site-packages/pymysql/cursors.py", line 321, in _query
conn.query(q)
File "/usr/lib64/python2.7/site-packages/pymysql/connections.py", line 505, in query
self._affected_rows = self._read_query_result(unbuffered=unbuffered)
File "/usr/lib64/python2.7/site-packages/pymysql/connections.py", line 724, in _read_query_result
result.read()
File "/usr/lib64/python2.7/site-packages/pymysql/connections.py", line 1069, in read
first_packet = self.connection._read_packet()
File "/usr/lib64/python2.7/site-packages/pymysql/connections.py", line 676, in _read_packet
packet.raise_for_error()
File "/usr/lib64/python2.7/site-packages/pymysql/protocol.py", line 223, in raise_for_error
err.raise_mysql_exception(self._data)
File "/usr/lib64/python2.7/site-packages/pymysql/err.py", line 107, in raise_mysql_exception
raise errorclass(errno, errval)
pymysql.err.OperationalError: (1105, u'errCode = 2, detailMessage = Cannot invoke "String.length()" because "str" is null')
下面是fe的日志报错信息:
2025-12-02 11:56:43,465 WARN (mysql-nio-pool-5|338) [BaseExternalTableInsertExecutor.onFail():135] insert [label_7c2f23d71ccf46e9_acfb38aabfb8c5b1] with query id 7c2f23d71ccf46e9-acfb38aabfb8c5b1 failed
java.lang.StackOverflowError
at software.amazon.awssdk.services.s3.DefaultS3Client.listObjectsV2(DefaultS3Client.java:9245)
at org.apache.doris.fs.obj.S3ObjStorage.listFiles(S3ObjStorage.java:146)
at org.apache.doris.fs.remote.S3FileSystem.listFiles(S3FileSystem.java:66)
at org.apache.doris.fs.remote.SwitchingFileSystem.listFiles(SwitchingFileSystem.java:106)
at org.apache.doris.datasource.hive.HMSTransaction.doRecursiveDeleteFiles(HMSTransaction.java:694)
...(和上一行一样,省略)
2025-12-02 11:56:43,466 WARN (mysql-nio-pool-5|338) [StmtExecutor.execute():650] Analyze failed. stmt[520, 7c2f23d71ccf46e9-acfb38aabfb8c5b1]
org.apache.doris.common.NereidsException: errCode = 2, detailMessage = Cannot invoke "String.length()" because "str" is null
at org.apache.doris.qe.StmtExecutor.executeByNereids(StmtExecutor.java:827)
at org.apache.doris.qe.StmtExecutor.execute(StmtExecutor.java:635)
at org.apache.doris.qe.StmtExecutor.queryRetry(StmtExecutor.java:594)
at org.apache.doris.qe.StmtExecutor.execute(StmtExecutor.java:579)
at org.apache.doris.qe.ConnectProcessor.executeQuery(ConnectProcessor.java:307)
at org.apache.doris.qe.ConnectProcessor.handleQuery(ConnectProcessor.java:199)
at org.apache.doris.qe.MysqlConnectProcessor.handleQuery(MysqlConnectProcessor.java:227)
at org.apache.doris.qe.MysqlConnectProcessor.dispatch(MysqlConnectProcessor.java:255)
at org.apache.doris.qe.MysqlConnectProcessor.processOnce(MysqlConnectProcessor.java:397)
at org.apache.doris.mysql.ReadListener.lambda$handleEvent$0(ReadListener.java:52)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:842)
Caused by: org.apache.doris.common.AnalysisException: errCode = 2, detailMessage = Cannot invoke "String.length()" because "str" is null
... 13 more
Caused by: java.lang.NullPointerException: Cannot invoke "String.length()" because "str" is null
at java.base/java.lang.AbstractStringBuilder.(AbstractStringBuilder.java:105)
at java.base/java.lang.StringBuilder.(StringBuilder.java:131)
at org.apache.doris.nereids.trees.plans.commands.insert.BaseExternalTableInsertExecutor.onFail(BaseExternalTableInsertExecutor.java:136)
at org.apache.doris.nereids.trees.plans.commands.insert.AbstractInsertExecutor.executeSingleInsert(AbstractInsertExecutor.java:204)
at org.apache.doris.nereids.trees.plans.commands.insert.InsertIntoTableCommand.runInternal(InsertIntoTableCommand.java:414)
at org.apache.doris.nereids.trees.plans.commands.insert.InsertIntoTableCommand.run(InsertIntoTableCommand.java:144)
at org.apache.doris.qe.StmtExecutor.executeByNereids(StmtExecutor.java:794)
... 12 more
2025-12-02 11:56:43,469 WARN (mysql-nio-pool-5|338) [MysqlConnectProcessor.processOnce():382] Null packet received from network. remote: 10.22.7.32:59458
2025-12-02 11:56:43,470 WARN (mysql-nio-pool-5|338) [ReadListener.lambda$handleEvent$0():60] Exception happened in one session(org.apache.doris.qe.ConnectContext@26c8242b:root).
java.io.IOException: Error happened when receiving packet.
at org.apache.doris.qe.MysqlConnectProcessor.processOnce(MysqlConnectProcessor.java:383)
at org.apache.doris.mysql.ReadListener.lambda$handleEvent$0(ReadListener.java:52)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:842)
2025-12-02 11:56:45,020 INFO (thrift-server-pool-15|294) [ReportHandler.handleReport():239] receive report from be 1764645614204. type: TASK, report version -1, current queue size: 1
2025-12-02 11:56:45,020 INFO (report-thread|177) [ReportHandler.taskReport():761] finished to handle task report from backend 1764645614204-10.22.8.53, diff task num: 0, publishTaskSize: 0, runningTasks: [], cost: 0 ms.