数据流导出到 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.

在开始导出作业之前,我创建了一个空表 &lt;my-project&gt;:&lt;my-dataset&gt;.&lt;my-table&gt;,其中的字段与上面的 JSON 架构匹配:

id          STRING  NULLABLE    
test_value  INTEGER NULLABLE    

我将outputTableSpec 设置为&lt;my-project&gt;:&lt;my-dataset&gt;.&lt;my-table&gt;

【问题讨论】:

您使用旧版 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 - 长时间延迟?

使用 insertAll 时丢失行 - BigQuery

BigQuery [PHP] InsertAll:未显示任何错误,但 BigQuery 表不受插入值的影响

如何使用 BigQuery Streaming 获取插入的行数

从 InsertAll 中查看数据的延迟