使用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
答案 0 :(得分:2)
TextIO.readAll()
,可在Beam 2.2中找到(版本目前正在进行中,但您已经可以从快照版本使用它或从github构建),读取PCollection
文件模式或文件名。