从Pipeline中的PCollection GCS文件名中读取文件?

时间:2015-08-28 18:54:07

标签: google-cloud-dataflow

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

我可以使用TextIO吗?当在执行期间定义文件名时,可以在流管道中使用它(与使用TextIO作为源并且构造中已知fileName(s)相反)。如果不是,我想要做以下事情:

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

我可以使用FileBasedReader或类似的东西来读取文件吗?文件不是太大,所以我不需要并行读取单个文件,但我需要读取大量文件。

1 个答案:

答案 0 :(得分:4)

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

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

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