在使用以下命令从GCS读取时,是否有任何方法可以获取正在处理的文件名:
p.apply("Read from GCS", TextIO.read((.from("gs://path/*"((.
我需要下一个 ParDo 中的文件名,以便将输出存储到适当的表中。
这个问题类似于在Google-Cloud-Dataflow中使用文件模式匹配时如何获取文件名,但上次更新是在一年多前,所以想知道是否有新功能可以实现这一点。
用TextIO
本身做到这一点,但 Beam 2.2 包括转换,允许您在读取文件时执行几乎任何您想要的自定义操作,使用 FileIO.match()
、 FileIO.readMatches()
。看到这个答案.您需要使用一个使用常规 Java 工具解析文本文件的DoFn<ReadableFile, String>
(如该答案所示(,并使用ReadableFile
的getMetadata()
来获取文件名。