【发布时间】:2017-05-17 21:22:26
【问题描述】:
我一直在使用他们的 python SDK 对梁管道进行原型设计,并且已经能够使用 BigQuerySink 来输出我的最终 pcollection 就好了:
beam.io.Write(beam.io.BigQuerySink('dataset.table',
self.get_schema(),
create_disposition=beam.io.BigQueryDisposition.CREATE_IF_NEEDED,
write_disposition=beam.io.BigQueryDisposition.WRITE_TRUNCATE))
修改表以包含如下分区:dataset.table$20170517 在尝试使用 DirectRunner 运行此管道时触发以下错误
“代码”:400, "message": "无法从未分区的表中读取分区信息:
我研究了此处找到的示例,但没有发现分区使用的痕迹 https://github.com/apache/beam/tree/master/sdks/python/apache_beam/examples
如何将数据传送到分区的 bigquery 表中?
【问题讨论】:
-
看代码,好像确实支持表分区。 (github.com/apache/beam/blob/release-0.6.0/sdks/python/…)。您的表是否正确分区?我正在检查 DirectRunner 是否支持该操作。
-
你的表真的分区了吗?
-
@pablo @Graham Polley:是的,表是分区的。当我
bq show表时,我得到 "timePartitioning": { "type": "DAY" } 现在,在我执行管道并加载数据而不指定分区后,分区信息将被删除。就好像 BigQuerySink 从表中删除了分区一样。
标签: python google-bigquery google-cloud-dataflow apache-beam