【问题标题】:HTTP 501 error when trying to use insertAll from Google App Engine to BigQuery尝试使用从 Google App Engine 到 BigQuery 的 insertAll 时出现 HTTP 501 错误
【发布时间】:2015-08-24 09:46:16
【问题描述】:

已解决:正如 Felipe 在 cmets 中建议的那样,我使用欧盟作为数据位置。 BigQuery 在欧盟数据中心无法使用流式传输,因此我不得不将数据迁移到美国数据中心,之后一切都按预期工作。

我的问题: 我正在尝试使用 Google App Engine(python 版本)将数据推送到 BigQuery。在实际插入发生之前,一切似乎都很好,之后我收到了 HTTP 501 错误。 Google 的错误代码表将我引向“联系支持”。

错误响应:
HttpError:https://www.googleapis.com/bigquery/v2/projects/[PROJECT]/datasets/[DATASET]/tables/[TABLE]/insertAll?alt=json 返回“未实现:流式摄取已禁用目标数据集。">

使用的实际代码:

class MainHandler(webapp2.RequestHandler):
    def get(self):
        data = json.loads(self.request.get('data'))
        body = {
            'insertId': str(uuid4()),
            'rows':[
                {'json': data}
            ]
        }

        credentials = appengine.AppAssertionCredentials(scope=_SCOPE)
        http = credentials.authorize(httplib2.Http())
        bigquery = discovery.build('bigquery', 'v2', http=http)
        response = bigquery.tabledata().insertAll(
            projectId=PROJECT_ID,
            datasetId=DATASET_ID,
            tableId=TABLE_ID,
            body=body).execute(num_retries=num_retries)

【问题讨论】:

  • Google 的错误代码表将我指向“联系支持” 并且..您联系过支持吗?
  • 我目前无法获得 Google 的支持,因为我没有支持包。因此,我在这里问这个问题,看看是否有其他人熟悉这个问题。
  • 然后在我的回答中发布链接。
  • 我的猜测:这个数据集是否托管在欧洲?欧洲集群目前不支持流式传输。
  • 感谢 Felipe,这解决了我的问题。如果您愿意在评论中写下作为答案,我会接受。

标签: python google-app-engine google-bigquery


【解决方案1】:

正如Felipe Hoffa 所指出的,此功能目前未在欧洲数据集上启用。

【讨论】:

    【解决方案2】:

    如错误消息所示:目标数据集的流式摄取已禁用。

    您要么尝试写入列为公开且只读的数据集,要么由于某种原因被 BigQuery 禁用,您可以联系他们。

    您可以联系支持here 或者如果您知道这是一个已知错误,您可以尝试发布问题here

    【讨论】:

    • 我会看看能不能找到一个公开的、启用写入功能的数据集并用它进行测试。
    猜你喜欢
    • 1970-01-01
    • 2011-03-23
    • 1970-01-01
    • 2020-12-15
    • 1970-01-01
    • 2012-01-13
    • 2012-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多