gpt4 book ai didi

python - 使用 write_truncate 通过 Google Dataflow/Beam 将数据加载到 Biqquery 分区表中

转载 作者:太空宇宙 更新时间:2023-11-04 05:13:40 25 4
gpt4 key购买 nike

因此我们使用现有的设置为每天创建一个新表,这与 "WRITE_TRUNCATE" 一起工作得很好选项,但是当我们更新代码以使用分区表时,尽管我们的数据流作业无法与 write_truncate 一起使用。

它工作得很好,写配置设置为“WRITE_APPEND”(据我所知,从 beam 开始,它可能会尝试删除表,然后重新创建它),因为我正在提供表装饰器无法创建新表。

使用 python 代码的示例片段:

beam.io.Write('Write({})'.format(date), beam.io.BigQuerySink(output_table_name + '$' + date, create_disposition=beam.io.BigQueryDisposition.CREATE_NEVER, write_disposition=beam.io.BigQueryDisposition.WRITE_TRUNCATE)

给出了错误:

Table IDs must be alphanumeric

因为它试图重新创建表,并且我们在参数中提供了分区装饰器。

以下是我尝试过的一些方法:

  1. 将 write_disposition 更新为 WRITE_APPEND,虽然有效,但达不到目的,因为再次运行同一日期会重复数据。
  2. 使用

bq --apilog/tmp/log.txt load --replace --source_format=NEWLINE_DELIMITED_JSON 'table.$20160101' sample_json.json

命令,查看我是否可以观察任何日志,了解截断实际如何工作,基于 link我发现的。

  1. 尝试了一些其他的 links ,但这也使用 WRITE_APPEND。

有没有办法使用 write_truncate 方法从数据流作业写入分区表?

如果需要任何其他详细信息,请告诉我。谢谢

最佳答案

目前似乎不支持此功能。 感谢@Pablo 从 IO 开发人员那里找到了答案。

根据Beam documentation在 Github 页面上,他们的 JIRA page请求这样的功能是合适的。我建议在那里提交功能请求并在此处的评论中发布链接,以便社区中的其他人可以跟进并表示支持。

关于python - 使用 write_truncate 通过 Google Dataflow/Beam 将数据加载到 Biqquery 分区表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42362038/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com