将hadoop`filestatus`Map回uri基相对路径

xfyts7mz  于 2021-07-13  发布在  Hadoop
关注(0)|答案(1)|浏览(376)

我正在运行一个hadoop map reduce作业,它使用了一些 FileSystem 实施。当我问 FileSytem 对于 FileStatus 根路径的 / ,它给了我一个 FileStatusFileStatus.getPath() 设置为 foo://bar/ . 当然是这样 Path.toUri() 退货 foo://bar/ .
显然 FileSystem 我使用的实现将“裸”绝对路径解释为相对于某个上下文uri(这让我想起javaeeservlet上下文Map,其中一个绝对的servlet路径 /bar 将相对于某个上下文基路径进行解释 /foo/ ,屈服 /foo/bar .)
那很好,但是我怎么才能画出另一条路呢?给一些 FileStatus 用一个 FileStatus.getPath() 返回 foo://bar/ ,我如何才能回到原来的“光秃秃”的道路 / ?
(或是在这种情况下 FileStatus 实现有缺陷,而且 FileStatus.getPath() 应该回来了 / 首先?我找不到任何hadoop FileSystem 说明此操作应如何工作的文档。)

lp0sw83n

lp0sw83n1#

虽然它可能看起来是路径的一部分,但是 bar 部分 foo://bar/ 是uri权威,如 java.net.URI api文档类似于 example.com 在url中 https://example.com/test.html . 因此,要恢复原来的路径,需要调用 FileStatus.getPath().toUri().getPath() ,它将返回授权后的uri部分。

相关问题