当前波束管道正在使用FileIO.matchAll().continuously()
将文件作为流读取。这将返回PCollection。
我想用相同的名称将这些文件写回另一个gcs存储桶,即每个PCollection
是一个文件metadata/readableFile
,应该在一些处理后写回另一个存储桶。我是否应该使用任何接收器来实现将每个PCollection
项目写回GCS,或者有任何方法可以实现吗?
是否可以为每个元素创建一个窗口,然后使用一些GCS接收器IO来执行此操作。
当在窗口上操作时(即使它有多个元素),beam确保窗口完全处理或根本不处理,换句话说,对于给定窗口原子而不是部分窗口的写入操作GCS or bigquery
如果有任何失败?
答案 0 :(得分:0)
您是否可以简单地编写一个DoFn<ReadableFile, Void>
来获取文件并使用FileSystems
API将其复制到所需位置?你不需要任何“接收器”来做到这一点 - 而且,无论如何,这就是所有“下沉”(TextIO.write()
,AvroIO.write()
等等)都在引擎盖下:它们只是由ParDo
和GroupByKey
组成的波束变换。