将 Hadoop `FileStatus` 映射回 URI 基本相对路径

Mapping Hadoop `FileStatus` back to URI base relative path

我是 运行 一个 Hadoop map reduce 作业,它使用了一些 FileSystem 实现。当我向 FileSytem 询问根路径 /FileStatus 时,它返回 FileStatus 并且 FileStatus.getPath() 设置为 foo://bar/ .自然是这个Path.toUri()returnsfoo://bar/.

显然,我正在使用的 FileSystem 实现将“裸”绝对路径解释为相对于某些上下文 URI。 (这让我想起 Java EE servlet 上下文映射,其中绝对 servlet 路径 /bar 将相对于某些上下文基本路径 /foo/ 进行解释,产生 /foo/bar。)

一切都很好,但是我如何映射到另一个方向?给定一些 FileStatusFileStatus.getPath() 返回 foo://bar/,我怎样才能找回 / 的原始“裸”路径?

(或者这个特定的 FileStatus 实现有问题,FileStatus.getPath() 应该返回 / 开始?我找不到任何 Hadoop FileSystem 描述这应该如何工作的文档。)

虽然它可能看起来是路径的一部分,但 foo://bar/bar 部分实际上是 java.net.URI API docs 中解释的 URI 权限——类似于 example.com 在 URL https://example.com/test.html 中。因此要返回原始路径,需要调用FileStatus.getPath().toUri().getPath(),这将return权限后的URI部分。