Google bigquery BigQuery-重试失败的插入作业
我有一个关于在BigQuery中重试失败的插入作业的问题。根据链接中的BigQuery文档,我们可以使用相同的作业id重试任意次数,并且只有一个作业会成功 请注意,对给定作业ID调用jobs.insert()是幂等的;在里面 换句话说,您可以在同一个作业上重试任意次数 而这些操作中最多有一个会成功 但是,当我稍后重试具有相同id的失败(已完成但有错误)作业时,它将失败并出现以下错误Google bigquery BigQuery-重试失败的插入作业,google-bigquery,Google Bigquery,我有一个关于在BigQuery中重试失败的插入作业的问题。根据链接中的BigQuery文档,我们可以使用相同的作业id重试任意次数,并且只有一个作业会成功 请注意,对给定作业ID调用jobs.insert()是幂等的;在里面 换句话说,您可以在同一个作业上重试任意次数 而这些操作中最多有一个会成功 但是,当我稍后重试具有相同id的失败(已完成但有错误)作业时,它将失败并出现以下错误 { "code" : 409, "errors" : [ { "domain" : "global
{
"code" : 409,
"errors" : [ {
"domain" : "global",
"message" : "Already Exists: Job bigquery-eval:INSERT-user_sessions-sessions_test-168-06-10-2015",
"reason" : "duplicate"
} ],
"message" : "Already Exists: Job bigquery-eval:INSERT-user_sessions-sessions_test-168-06-10-2015"
}
你们能告诉我为什么失败,我们如何重试吗?根据我的理解,这不应该失败。如果我的期望是错误的,请纠正我
我还想知道当存在具有相同作业id的并发插入请求时BigQuery的行为。我知道这不应该发生。但我想了解。当我运行很多并发进程执行插入时,我看到了很多这样的错误。但无法从回答中确定原因
已编辑
这是我在该id上执行get时得到的响应。显然,由于末尾有一个换行符,它已完成,但出现了错误
{
"id": "bigquery-eval:INSERT-user_sessions-sessions_test-168-06-10-2015",
"status": {
"state": "DONE",
"errorResult": {
"reason": "invalid",
"message": "Too many errors encountered. Limit is: 0."
},
"errors": [
{
"reason": "invalid",
"location": "File: 0 / Offset:0 / Line:1 / Column:2411 / Field:",
"message": "parse error: trailing garbage\n"
},
{
"reason": "invalid",
"message": "Too many errors encountered. Limit is: 0."
}
]
},
"statistics": {
"creationTime": "1444150359688",
"startTime": "1444151563664",
"endTime": "1444151566721",
"load": {
"inputFiles": "1",
"inputFileBytes": "19091357",
"outputRows": "0",
"outputBytes": "0"
}
}
}
谢谢您的时间。hmmm我找到了这个说明您需要执行作业的文档。获取,更改ID、jobID、status和statistics字段,然后再次抛出以再次运行。此外,完成时出现错误!=失败。。。它有错误状态吗?嗯,我错过了这个。但我想知道这对幂等插入有什么帮助。我发布的链接建议使用相同的作业id重试。哪一个是正确的?对它确实有错误的结果。错误是文件末尾有换行符。我的案例中允许的错误数为0。因此,不应加载此文件(因为它是原子文件)。这是一个很好的问题。现在我的理论是,如果它成功了,它不会让你再次运行它,但如果它失败了,它可以再试一次。正如你所说的,它已经完成了,但是有错误。。。这意味着它有错误,而不是它失败了。它有错误状态吗?你可以有有问题的行(这将导致你的回复出现错误),但仍然有一份成功的工作。我已经编辑了我的原始帖子,以包含旧的工作细节。请查收。