首页 文章

apache_beam Python SDK 0.6.0 BigQuerySink是否支持表分区?

提问于
浏览
0

我一直在使用他们的python SDK对beam管道进行原型设计,并且能够使用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运行此管道时触发以下错误


“code”:400,“message”:“无法读取未分区的表中的分区信息:


我已经研究了这里找到的例子但发现没有分区使用的痕迹https://github.com/apache/beam/tree/master/sdks/python/apache_beam/examples

如何将数据束接收到分区的bigquery表中?

1 回答

  • 1

    apache_beam Python SDK确实接受BigQuerySink的分区装饰器 . 尝试使用不同的write_disposition可以获得更多信息 .

    • WRITE_TRUNCATE不会写入表分区 . 在表名中使用$ YYYYmmdd分区将导致此错误 . 这与实际接受分区装饰器的Google Python SDK行为不同 .
    Table IDs must be alphanumeric (plus underscores) and 
    must be at most 1024 characters long.
    
    • WRITE_EMPTY将接受分区装饰器 .

    • WRITE_APPEND将接受分区装饰器 .

相关问题