Google cloud dataflow 从管道中的GCS文件名的PCollection读取文件?

Google cloud dataflow 从管道中的GCS文件名的PCollection读取文件?,google-cloud-dataflow,Google Cloud Dataflow,我有一个连接到pub/sub的流媒体管道,发布GCS文件的文件名。从那里我想读取每个文件并解析出每行上的事件(这些事件是我最终想要处理的) 我能用TextIO吗?当文件名在执行过程中定义时,您是否可以在流式管道中使用它(与使用TextIO作为源和文件名在构造时已知不同)。如果没有,我想做如下事情: 从pub/sub获取主题 ParDo读取每个文件并获取行 处理文件的行 在本例中,我可以使用FileBasedReader或类似的工具来读取文件吗?文件不是太大,所以我不需要并行读取单个文件,但我需要

我有一个连接到pub/sub的流媒体管道,发布GCS文件的文件名。从那里我想读取每个文件并解析出每行上的事件(这些事件是我最终想要处理的)

我能用TextIO吗?当文件名在执行过程中定义时,您是否可以在流式管道中使用它(与使用TextIO作为源和文件名在构造时已知不同)。如果没有,我想做如下事情:

从pub/sub获取主题 ParDo读取每个文件并获取行 处理文件的行


在本例中,我可以使用FileBasedReader或类似的工具来读取文件吗?文件不是太大,所以我不需要并行读取单个文件,但我需要读取大量文件

您可以使用最近添加到Beam in中的
TextIO.readAll()
转换。例如:

PCollection<String> filenames = p.apply(PubsubIO.readStrings()...);
PCollection<String> lines = filenames.apply(TextIO.readAll());
PCollection filenames=p.apply(PubsubIO.readStrings()…);
PCollection line=filename.apply(TextIO.readAll());

这将读取通过pubsub到达的每个文件中的所有行。

我们已经接近拥有足够的API支持来创建有效的实现。请遵循TextIO应该支持读取文件名的PCollection。我编辑了我的答案以反映新的API。