无论如何,使用以下方法从GCS读取时都会处理文件名:
p.apply("读取GCS",TextIO.read()。from(" gs:// path / *"))。
我需要在下一个ParDo中使用文件名将输出存储到适当的表中。
这个问题与How to Get Filename when using file pattern match in google-cloud-dataflow类似,但最后一次更新是在一年多前,所以想知道是否有新的功能可以实现这一点。
答案 0 :(得分:1)
您无法使用TextIO
本身执行此操作,但Beam 2.2包含的转换功能可让您在阅读文件时使用FileIO.match()
,{{1 }}。见this answer。您需要使用FileIO.readMatches()
使用常规Java工具解析文本文件(如该答案中所示),并使用DoFn<ReadableFile, String>
的{{1}}获取文件名。