Apache Beam TextIO PCollection文件而不是行

时间:2017-11-14 16:27:40

标签: regex google-cloud-dataflow apache-beam

使用Apache Beam Java SDK 2.1.0

我们在一堆Google云端存储中有几个错误日志,我们正在阅读此路径中的所有文件,使用TextIO.read

我们需要聚合它们才能找到正在发送的消息中的错误。我们有一个有效的正则表达式,从每个文件中过滤不同的行,问题是TextIO.read的性质我们得到PCollection行,所以当试图在{{1}中应用正则表达式时它逐行处理,正则表达式永远不会找到匹配。

正则表达式:pardo

有没有"MESSAGE:(.*)\\n\\[MESSAGE\\].*(\\\"entityName\\\":\\\"\\w+\\\")"返回TextIO.read个文件,每个元素一个文件,那么当它获得PCollection时我们可以访问完整元素?

作为一个计划b,有没有办法将每个文件的所有行合并为一个,使用Apache Beam,所以正则表达式模式有效?

parDo

1 个答案:

答案 0 :(得分:2)

TextIO.readAll(),可在Beam 2.2中找到(版本目前正在进行中,但您已经可以从快照版本使用它或从github构建),读取PCollection文件模式或文件名。