与 DROP PARTITION 同时运行时,SELECT 或 INSERT 失败

SELECT 或 INSERT 语句与同一张表上的 DROP PARTITION 语句同时运行时,可能会出现 [ SQLCODE=-5105 ] [ SQLSTATE=58040 ] 失败。

对于 INSERT,调度程序可能无法加载并发 DDL 正在删除的文件的元数据。

对于 SELECT,调度程序可能无法加载并发 DDL 正在删除的文件的元数据,或者读取器可能无法扫描这些文件。

故障现象

您可能会在调度程序主机的 bigsql-sched.log 中看到以下类型的错误:
The statement failed because a Big SQL component encountered an error. 
Component receiving the error: "SCHEDULER". Component returning the error: "FRONT-END". 
Log entry identifier: "[SCL-0-zqml3421a]".. SQLCODE=-5105, SQLSTATE=58040
以及元数据加载操作失败:
ERROR 
com.ibm.biginsights.bigsql.scheduler.server.cache.DescriptorTableCache [pool-1-thread-8793] : 
IncompleteTable at cause level1 for schemaName=<SCHEMA_NAME> tableName=<TABLE_NAME>.
com.thirdparty.cimp.catalog.TableLoadingException: Failed to load metadata for table: <TABLE_NAME>
您可能会在工作主机的 bigsql.log 中看到以下类型的错误:
The statement failed because a Big SQL component encountered an error. 
Component receiving the error: "BigSQL IO". Component returning the error: "UNKNOWN". 
Log entry identifier: "[BSL-1-15k27t217]".  SQLSTATE=58040
以及 File does not exist 错误:
ERROR 
com.ibm.biginsights.bigsql.dfsrw.reader.DfsBaseReader [Master-1-S:12.1001.4.0.0.-28151] : [BSL-1-15k27t217] 
Exception raised by Reader at node: 1 Scan ID: S:12.1001.4.0.0.-28151 Table: <TABLE_NAME> 
Spark: false VORC: false VPQ: true VAVRO: false VTEXT: false VRCFILE: false VANALYZE: false
Exception Label: UNMAPPED(java.io.FileNotFoundException: File does not exist: <FILE_PATH>

原因

由于 DROP PARTITION 语句会传递到 Hive ,而 会使用自己的内部锁定,因此该语句不会阻塞正在进行的 DML(如 SELECT 和 INSERT),因为这些 DML 可能依赖于受影响的数据。

解决问题

避免对正在进行 SELECT 或 INSERT 操作的表运行 DROP PARTITION 语句。

如果 SELECT 或 INSERT 语句因 DROP PARTITION 操作而失败,请重试失败的语句。