【发布时间】:2019-07-09 15:35:58
【问题描述】:
我正在尝试编写一个数据流作业,该作业需要处理位于存储中的日志并将它们写入不同的 BigQuery 表中。将使用哪些输出表取决于日志中的记录。因此,我对日志进行了一些处理,并使用基于日志中的值的键生成它们。之后,我将日志分组到密钥上。我需要将分组在同一个键上的所有日志写入一个表。
我正在尝试将 beam.io.gcp.bigquery.WriteToBigQuery 模块与可调用的模块一起用作documentation here 中所述的表参数
我想使用一个日期分区表,因为这样我可以很容易地在不同的分区上write_truncate。
现在我遇到两个主要问题:
-
CREATE_IF_NEEDED给出错误,因为它必须创建分区表。我可以通过确保表存在于上一步中来规避这种情况,如果不存在则创建它们。 - 如果我加载旧数据,我会收到以下错误:
The destination table's partition table_name_x$20190322 is outside the allowed bounds. You can only stream to partitions within 31 days in the past and 16 days in the future relative to the current date."
这似乎是流插入的限制,有什么方法可以进行批量插入?
也许我正在接近这个错误,应该使用另一种方法。 任何有关如何解决这些问题的指导表示赞赏。
我正在使用 python 3.5 和 apache-beam=2.13.0
【问题讨论】:
标签: python-3.x google-bigquery google-cloud-dataflow apache-beam