我正在运行一个hadoop map reduce作业,它使用了一些 FileSystem
实施。当我问 FileSytem
对于 FileStatus
根路径的 /
,它给了我一个 FileStatus
与 FileStatus.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
说明此操作应如何工作的文档。)
1条答案
按热度按时间lp0sw83n1#
虽然它可能看起来是路径的一部分,但是
bar
部分foo://bar/
是uri权威,如java.net.URI
api文档类似于example.com
在url中https://example.com/test.html
. 因此,要恢复原来的路径,需要调用FileStatus.getPath().toUri().getPath()
,它将返回授权后的uri部分。