从Dataflow中的GCS读取时如何获取正在处理的文件名?

时间:2017-12-31 17:54:22

标签: google-cloud-dataflow

无论如何,使用以下方法从GCS读取时都会处理文件名:

p.apply("读取GCS",TextIO.read()。from(" gs:// path / *"))。

我需要在下一个ParDo中使用文件名将输出存储到适当的表中。

这个问题与How to Get Filename when using file pattern match in google-cloud-dataflow类似,但最后一次更新是在一年多前,所以想知道是否有新的功能可以实现这一点。

1 个答案:

答案 0 :(得分:1)

您无法使用TextIO本身执行此操作,但Beam 2.2包含的转换功能可让您在阅读文件时使用FileIO.match(),{{1 }}。见this answer。您需要使用FileIO.readMatches()使用常规Java工具解析文本文件(如该答案中所示),并使用DoFn<ReadableFile, String>的{​​{1}}获取文件名。