我试图从云存储中的大文件中读取并根据给定字段对它们进行分片。
我打算阅读| Map(lambda x:(x [key field],x))| GroupByKey |使用关键字段的名称写入文件。
但是,我无法找到一种动态写入云存储的方法。是否支持此功能?
谢谢你, 一清
答案 0 :(得分:1)
是的,您可以使用FileSystems
API创建文件。
答案 1 :(得分:0)
在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())
可用于每条记录写入不同的文件。
您可以跳过GroupByKey
,只需使用destination
来确定每条记录写入哪个文件。 destination
的返回值必须是可以分组的值。
更多文档在这里:
would be to use a Personal Access Token
此处还有JIRA问题:
https://beam.apache.org/releases/pydoc/2.14.0/apache_beam.io.fileio.html#dynamic-destinations