我正在使用 Spotify 的 Scio 庫在 scala 中編寫 apache beam 管道。我想在文件系統(可以是 hdfs、alluxio 或 GCS)上以遞歸方式搜索目錄下的文件。像 *.jar 一樣應該找到提供的目錄和子目錄下的所有文件。Apache Beam sdk 提供了org.apache.beam.sdk.io.FileIO用于此類目的的類,我可以使用pipeline.apply(FileIO.match().filepattern(filesPattern)).如何使其遞歸搜索與提供的模式匹配的所有文件?目前,我正在嘗試另一種方法,其中我正在創建提供的模式的resourceId并獲取提供的模式的當前目錄,然后我嘗試使用方法解析當前目錄中的所有子目錄resourceId.resolve()。但它拋出了一個例外。 val currentDir = FileSystems.matchNewResource(filesPattern, false).getCurrentDirectory
val childDir = currentDir.resolve("{@literal *}", StandardResolveOptions.RESOLVE_DIRECTORY)請建議使用 apache beam 遞歸搜索文件的正確方法是什么?參考文獻: https: //beam.apache.org/releases/javadoc/2.11.0/index.html?org /apache/beam/sdk/io/fs/ResourceId.html
1 回答

心有法竹
TA貢獻1866條經驗 獲得超5個贊
看起來您從一些錯誤的 javadoc復制了一些代碼。發布的示例代碼的一些舊版本在星號周圍有錯誤。
要查找 currentDir 中的所有文件:
val?childDir?=?currentDir.resolve("**",?StandardResolveOptions.RESOLVE_FILES)
添加回答
舉報
0/150
提交
取消