Apache Beam Java SDK有一个DynamicDestinations类,允许根据输入元素写入不同的大查询表。我在Python SDK中看不到任何看起来相同的东西。是否有一些类允许在Python SDK中写入动态选择的目标表?
答案 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问题: