为了账号安全,请及时绑定邮箱和手机立即绑定

Apache Beam 通配符递归搜索文件

Apache Beam 通配符递归搜索文件

动漫人物 2024-01-05 16:33:39
我正在使用 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)


查看完整回答
反对 回复 2024-01-05
  • 1 回答
  • 0 关注
  • 85 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信