Bigquery Job - Connexion关闭

时间:2016-01-06 14:40:58

标签: google-bigquery

我使用bg命令行在表格中插入数据,有时(1或2%)我有错误

  

加载操作中的BigQuery错误:无法与BigQuery连接   服务器由于:错误(10054,'现有连接被强行   由远程主机关闭')

如果我之后重新执行该命令,则作业成功运行。

我没有使用云存储和存储桶,但我已经在使用计算引擎服务器的Google网络中

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

使用bq命令行客户端时,您似乎遇到了高级别的连接错误。

当客户端和BigQuery服务之间的服务器终止连接时,会发生连接错误。 BigQuery本身总是返回JSON有效负载。如果bq客户端收到非JSON响应,则会显示错误消息“由于以下原因导致无法与BigQuery服务器连接:”错误消息。 (错误消息的最后一部分包含某些中间服务器遇到的内容。)

弄清楚为什么你会看到大约1%的操作因连接错误而失败。

也许您的Google Compute Engine实例在BigQuery没有存在的区域中运行?现在,BigQuery在欧洲和美国都有业务。如果您没有在这些位置附近运行实例,则长途网络连接可能会导致问题。尝试使用美国的某个地区,看看您是否有更好的连接。

如果您所在的地区是BigQuery,请考虑打开支持请求。 https://cloud.google.com/support/

作为解决方法,您可以自动重试BigQuery操作。

一个警告:bq命令行客户端不会重试HTTP连接错误的操作。在某些情况下,这可能会导致重复工作(例如,插入允许服务器提供job_id的加载作业)。在其他情况下,这会将错误代码“已存在”与成功混淆,某些用例可能需要区分。

如果您的用例可以安全地重试,那么您的脚本可以安全地重试失败的bq操作。您可能希望编写自定义客户端来执行所需的操作,并以安全重试的方式执行操作。例如。 bq.py使用bigquery_client.py来完成它的工作,并且该编程层具有更多功能,例如table.insert操作中“ignore_existing”的功能。虽然bq.py将无法“mk”一个已经存在的表,但是即使该表已经存在,bigquery_client.py的CreateTable也可以“成功”。这将简化重试。

祝你好运!