加载作业失败,错误字段 field-name 已存在于架构中

Posted

技术标签:

【中文标题】加载作业失败,错误字段 field-name 已存在于架构中【英文标题】:Load Job failed with error field field-name already exists in schema加载作业失败,错误字段 field-name 已存在于架构中 【发布时间】:2015-01-11 21:36:37 【问题描述】:

我在尝试从数据存储备份文件(在云存储中)创建表时遇到问题

特定实体类型会出现此问题。我的应用引擎数据存储区中有大约 20 种实体。如果我为所有实体类型创建数据库备份,我可以毫无问题地将几乎所有相应的 EntityName.backup_info 文件导入 bigquery,无论是使用 Bigquery UI(创建表功能)还是通过这个漂亮的 pyton 包使用 API @ 987654321@

特定实体种类的备份会出现问题。当我尝试通过 UI 或 API 导入它时,我收到以下作业加载错误

字段 field_name 已存在于架构中

我在试图解决这个问题时遇到了分歧。我很乐意在云存储中提供 .backup_info 文件的 url,并授予 google 人员权限以解决此问题

进一步调查:

我在数据存储区统计信息(按属性和复合索引细分)中看到,产生错误的属性 Credit 在架构中出现了两次

Credit  Key 35.23 KB    173.94 KB   0 
Credit  NULL    501.34 KB   6.77 MB 2

曾几何时,该模型有一个关键属性,但它已被删除,因此推测可能存在一些具有该属性的实体。其他属性 Credit NULL 不知道是怎么回事。

问题的根源似乎是我需要解决这个问题,但目前尚不清楚如何解决。我可以重新保存这种类型的所有实体(大约 50K)(使用 map reduce 作业的 map 阶段)。这是一个可能的解决方案吗?我没有看到改变“模式”的方法,它似乎是自动生成的。

【问题讨论】:

【参考方案1】:

这是数据存储架构转换中的一个已知 BigQuery 问题。我们正在努力修复。不幸的是,除了移动或重命名导致冲突的实体之外,我不知道解决方法。

【讨论】:

好的,谢谢您的回复。我仍然在黑暗中。删除或重命名导致冲突的实体是什么意思?我实际上不确定是哪些实体导致了冲突。我能做的是检查所有此类实体并做一些事情,例如在我认为导致问题的属性上设置虚假值等。 顺便说一句,有问题的属性是这样定义的 my_property_name = ndb.KeyProperty("Credit") 这种类型的某些实体设置了属性 'my_property_name' 但由于属性定义已被删除一段时间,较新的实体没有设置它。 无论如何,修复中是否有预计到达时间?【参考方案2】:

通过运行地图作业重新保存所有此类实体并为有问题的属性 my_property_name = None 设置值来解决问题

之后,bigquery 的导入工作就成功了!

【讨论】:

以上是关于加载作业失败,错误字段 field-name 已存在于架构中的主要内容,如果未能解决你的问题,请参考以下文章

预检响应中的 Access-Control-Allow-Headers 不允许请求标头字段 <field-name>

BigQuery 加载作业失败 - 无法访问 GCS 文件

2 小时后 2MM 行加载作业失败,但未生成有用的错误消息

GITLAB CI错误加载密钥“/dev/fd/63”:格式无效错误:作业失败:退出代码1

SQL作业sql ssis作业错误:“由于错误0xC0010014导致程序包无法加载,这在CPackage :: LoadFROMXML失败时会发生

Sqoop 作业因 Oracle 导入的 KiteSDK 验证错误而失败