python-3.x - 使用 apache beam 中的 beam.io.gcp.bigquery.WriteToBigQuery 模块写入日期分区的 Bigquery 表
问题描述
我正在尝试编写一个数据流作业,该作业需要处理位于存储中的日志并将它们写入不同的 BigQuery 表中。将使用哪些输出表取决于日志中的记录。因此,我对日志进行了一些处理,并使用基于日志中的值的键生成它们。之后,我将日志分组到密钥上。我需要将按同一键分组的所有日志写入表。
我正在尝试使用beam.io.gcp.bigquery.WriteToBigQuery
带有可调用的模块作为表参数,如文档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
解决方案
推荐阅读
- yii2 - Yii2无法在mongodb中提取消息
- c# - 更新列表中的数据
- android - 如何使用相同的回收适配器为不同的布局充气?
- java - 将 JSP 页面转换为 servlet
- wordpress - 如何防止 Facebook Instant 文章中的内容盗窃
- java - 如何在 recyclerview 上添加 SetOnClicklistener
- php - 用户将数据插入表单后数据空白
- bash - 在 Bash 中迭代地加入多个文件
- apache-spark - 如何计算 SparseVector 中的特征存在量
- amazon-web-services - 将流量重定向到 www。使用 Amazon Route 53 的域