数据流导出到 Bigquery:insertAll 错误,无效的表引用
Posted
技术标签:
【中文标题】数据流导出到 Bigquery:insertAll 错误,无效的表引用【英文标题】:Dataflow export to Bigquery: insertAll error, invalid table reference 【发布时间】:2021-02-09 06:25:10 【问题描述】:我正在尝试使用 Dataflow、Pub/Sub 和 BigQuery 创建和导出合成数据流。我使用以下架构遵循synthetic data generation instructions:
"id": "uuid()",
"test_value": integer(1,50)
架构在文件gs://my-folder/my-schema.json
中。流似乎运行正确 - 我可以使用“导出到云存储”模板从相应的 Pub/Sub 主题导出到 GCS 存储桶。当我尝试使用“导出到 BigQuery”模板时,我不断收到此错误:
Request failed with code 400, performed 0 retries due to IOExceptions, performed 0 retries due to unsuccessful status codes, HTTP framework says request can be retried, (caller responsible for retrying): https://bigquery.googleapis.com/bigquery/v2/projects/<my-project>/datasets/<my-dataset>/tables/<my-table>/insertAll.
在开始导出作业之前,我创建了一个空表 <my-project>:<my-dataset>.<my-table>
,其中的字段与上面的 JSON 架构匹配:
id STRING NULLABLE
test_value INTEGER NULLABLE
我将outputTableSpec
设置为<my-project>:<my-dataset>.<my-table>
。
【问题讨论】:
您使用旧版 BQ 表描述。你试过标准格式吗? project.dataset.table 如果我尝试这样做,UI 会显示错误Value must be of the form: ".+:.+\..+"
并且不允许我运行作业。
【参考方案1】:
如果 BQ 表名以project:dataset.table
的形式给出,那么table
字符串中不能有任何连字符。当我收到代码 400 错误时,我正在使用 my-project.test.stream-data-102720
。创建一个新表 my-project.test.stream_data_102720
并使用新名称重新运行作业解决了问题。
【讨论】:
天哪,这在 python SDK 中一点也不明显。谢谢以上是关于数据流导出到 Bigquery:insertAll 错误,无效的表引用的主要内容,如果未能解决你的问题,请参考以下文章
BigQuery - 时间戳偏移不适用于 insertAll / Streaming?
Steaming insert / insertAll - 长时间延迟?
BigQuery [PHP] InsertAll:未显示任何错误,但 BigQuery 表不受插入值的影响