带有数据流的Apache Beam:标记为"ignore_unknown_columns"表示WriteToBigQuery不起作用



我正在使用Apache Beam (Python SDK版本2.37.0)和Google Dataflow构建流媒体管道,将我通过Pubsub接收的一些数据写入BigQuery。

我处理数据,最终得到由字典表示的行:

{'val1': 17.4, 'val2': 40.8, 'timestamp': 1650456507, 'NA_VAL': 'table_name'}

然后我想使用WriteToBigQuery将值插入到我的表中。

然而,我的表只有val1,val2timestamp列。因此,应该忽略NA_VAL。从我对文档的理解来看,这应该可以通过设置ignore_unknown_columns=True来实现。

然而,当在Dataflow中运行管道时,我仍然收到一个错误,并且没有将值插入到表中:

There were errors inserting to BigQuery. Will not retry. Errors were [{'index': 0, 'errors': [{'reason': 'invalid', 'location': 'NA_VAL', 'debugInfo': '', 'message': 'no such field: NA_VAL.'}]}]

我尝试了一个简单的作业配置,像这样

rows | beam.io.WriteToBigQuery(
table='PROJECT:DATASET.TABLE',
ignore_unknown_columns=True)

以及这些参数

rows | beam.io.WriteToBigQuery(
table='PROJECT:DATASET.TABLE',
ignore_unknown_columns=True,
create_disposition=beam.io.BigQueryDisposition.CREATE_NEVER,
write_disposition=beam.io.BigQueryDisposition.WRITE_APPEND,
method='STREAMING_INSERTS',
insert_retry_strategy='RETRY_NEVER')

我是否在这里遗漏了一些阻止管道工作的东西?有人有同样的问题和/或解决方案吗?

不幸的是你被bug咬了。这被报告为https://issues.apache.org/jira/browse/BEAM-14039,并由https://github.com/apache/beam/pull/16999修复。版本2.38.0将包含此修复。对该版本的验证今天刚刚结束,所以应该很快就可以使用了。

相关内容

  • 没有找到相关文章

最新更新