Apache Beam DynamicDestinations Python等价物

时间:2018-05-02 18:32:20

标签: python google-cloud-dataflow apache-beam

Apache Beam Java SDK有一个DynamicDestinations类,允许根据输入元素写入不同的大查询表。我在Python SDK中看不到任何看起来相同的东西。是否有一些类允许在Python SDK中写入动态选择的目标表?

2 个答案:

答案 0 :(得分:3)

Apache Beam Python SDK在各种功能方面仍然没有Java SDK那么先进,所以你可能会看到一些仍然只在Java SDK中可用的缺失功能。

据我所知,根据我能找到的Python SDK Beam's BigQuery IO documentation,目前没有类可用于指定动态BigQuery目标,因为Java SDK可用(Dynamic Destinations in Java SDK )。

我建议您在Apache Beam Jira issue tracker中将新问题作为功能请求提交,解释为什么此功能是Python SDK的一个很好的补充,希望开发人员也会考虑这个选项。

答案 1 :(得分:1)

在2.14.0 beam.io.fileio.WriteToFiles的Beam python SDK中添加了实验性写法:

my_pcollection | beam.io.fileio.WriteToFiles(
      path='/my/file/path',
      destination=lambda record: 'avro' if record['type'] == 'A' else 'csv',
      sink=lambda dest: AvroSink() if dest == 'avro' else CsvSink(),
      file_naming=beam.io.fileio.destination_prefix_naming())

可用于每条记录写入不同的文件。

没有BigQuerySink,您必须创建一个继承自beam.io.fileio.FileSink的新类。此处有更多文档:

https://beam.apache.org/releases/pydoc/2.14.0/apache_beam.io.fileio.html#dynamic-destinations

此处还有JIRA问题:

https://issues.apache.org/jira/browse/BEAM-2857