【问题标题】:Apache Beam DynamicDestinations Python equivalentApache Beam DynamicDestinations Python 等效项
【发布时间】:2018-05-02 18:32:19
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    就功能的多样性而言,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 的一个很好的补充,希望开发人员也能考虑这个选项。

    【讨论】:

      【解决方案2】:

      2.14.0 的 Beam python SDK 中添加了一个实验性写入,beam.io.fileio.WriteToFiles

      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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-10-05
        • 1970-01-01
        • 2018-06-13
        • 1970-01-01
        • 2017-10-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多