Glue - 为更新错误生成了结果集

Glue - A result set was generated for update error

我正在使用 Glue 向 RDS Sql 服务器实例插入简单数据框。

最后一行(共 8 行)未插入并抛出错误:

FAILED: table_name, Exception: An error occurred while calling o216.pyWriteDynamicFrame. : org.apache.spark.SparkException: 

Job aborted due to stage failure: Task 15 in stage 4.0 failed 4 times, most recent failure: Lost task 15.3 in stage 4.0 (TID 35, 10.234.42.138, executor 1): java.sql.BatchUpdateException: A result set was generated for update.

我检查了 table 的结构、约束、索引、失败环境 (dev) 和其余环境之间的触发器,没有发现任何差异。此外,我排除了 Glue/Python 的问题,因为我在工作中的 function.py 用于所有环境。

来自 SQ:Server profiler 我可以确认插入被重试了 4 次并获得了额外的日志:

declare @p1 int
set @p1=1
exec sp_prepexec @p1 output,N'@P0 nvarchar(4000),@P1 nvarchar(4000),@P2 bigint,N'INSERT INTO [schema].[table] ("col","col","col") VALUES (@P0,@P1,@P2)                                                                                                                                                                                                                                          ',N'xyz',N'xyz',7,N'xyz'
select @p1


exec sp_unprepare 1

IF @@TRANCOUNT > 0 ROLLBACK TRAN

感谢您就进一步改进的建议...

暂时以下解决方法完成了工作:

  1. 在 table
  2. 上禁用触发器
  3. 截断 table
  4. Re-run 胶水作业,填充数据
  5. 启用触发器
  6. Re-run 再次粘贴作业,数据现在已更新