【问题标题】:BigQuery refusing to insert few records while streamingBigQuery 拒绝在流式传输时插入少量记录
【发布时间】:2018-09-06 01:25:55
【问题描述】:

我一直在尝试使用 python google-cloud 包from google.cloud import bigquery 将数据流式传输到 BigQuery。

我观察到的是它拒绝插入几行这样说

[{u'debugInfo': u'', u'reason': u'invalid', u'message': u'no such field.', u'location': u'user.new_user'}]}]

但是,我可以在架构table.schema 中看到该列

[(u'USER', u'record', u'NULLABLE', None, (SchemaField(u'new_user', u'string', u'NULLABLE', None, ())))]

这是因为我试图以比 BigQuery 文档中提到的更快的速度进行流式传输和更新吗?

我尝试在终端上运行相同的东西,并且没有任何错误。当我尝试以更高的速率进行流式传输时,就会发生这种情况。

目前,我使用 as

self.bigquery_client.create_rows_json(table, batched_event,retry=bigquery.DEFAULT_RETRY.with_deadline(10),skip_invalid_rows=True, ignore_unknown_values=True)

【问题讨论】:

    标签: python google-cloud-platform google-bigquery streaming schema


    【解决方案1】:

    如果您在使用流式传输时修改架构,则流式传输系统不会立即获取架构更改。更多信息:

    https://cloud.google.com/bigquery/troubleshooting-errors#metadata-errors-for-streaming-inserts

    【讨论】:

    • 你能分享更好的解决方法吗?我们如何处理这种模式不断变化的数据
    • 如果它不只是一个稀疏模式,一种可能性是考虑一个不需要模式演变的更通用的模式。 BigQuery 支持复杂类型,因此可以将某些事物建模为通用键/值结构的数组作为示例。另一种策略可能只是更积极地退避并在模式不匹配响应时重试。
    • 感谢您的帮助。你能提供一些关于重试的见解吗?我可以在流式传输时仅批量获取失败的记录,以便在 10 分钟左右后再次尝试吗?
    猜你喜欢
    • 2018-05-13
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    • 2014-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多