TASK_WRITE_FAILED 将行写入 s3 时任务失败

问题描述 投票:0回答:1

我正在使用 Databricks SQL 运行插入语句:

INSERT INTO my_catalog.my_schema.my_table (a, b, c)
SELECT a, b, c FROM [...];

我收到错误消息:

[TASK_WRITE_FAILED] Task failed while writing rows to 
s3://my_bucket/my_catalog/__unitystorage/catalogs/123456/tables/123456.

这对于理解失败原因没有多大帮助:它似乎与 S3 有关,但同一目录中的其他插入语句(即使在同一模式中)工作得很好。

关于这可能与什么有关有什么建议吗?如果有更有意义的错误消息也很好。

amazon-web-services amazon-s3 databricks databricks-sql
1个回答
0
投票

最终,我尝试在 SQL 查询中添加

LIMIT
,以便处理更少的记录,但我开始收到与转换相关的不同错误,类似于:

[CAST_OVERFLOW_IN_TABLE_INSERT] Fail to insert a value of "DECIMAL(10, 0)" type into the "DECIMAL(32, 16)" type column `a` due to an overflow. 
Use `try_cast` on the input value to tolerate overflow and return NULL instead.

之后,我根据原始

INSERT
语句重新创建了目标表,即使没有
LIMIT
子句,它也开始工作。

我觉得

TASK_WRITE_FAILED
隐藏了真正的潜在错误,而使用
LIMIT
子句,真正的错误就会显示出来。

TLDR:最初的错误消息对理解真正的问题没有帮助,将

LIMIT
添加到我的查询中解锁了我并让我理解了它。

希望这个可以改进。

© www.soinside.com 2019 - 2024. All rights reserved.