HADOOP-15753. ABFS: support path "abfs://mycluster/file/path"
Contributed by Da Zhou.
This commit is contained in:
parent
e5593cbd83
commit
26211019c8
|
@ -366,6 +366,29 @@ public class AzureBlobFileSystem extends FileSystem {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Qualify a path to one which uses this FileSystem and, if relative,
|
||||||
|
* made absolute.
|
||||||
|
* @param path to qualify.
|
||||||
|
* @return this path if it contains a scheme and authority and is absolute, or
|
||||||
|
* a new path that includes a path and authority and is fully qualified
|
||||||
|
* @see Path#makeQualified(URI, Path)
|
||||||
|
* @throws IllegalArgumentException if the path has a schema/URI different
|
||||||
|
* from this FileSystem.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Path makeQualified(Path path) {
|
||||||
|
// To support format: abfs://{dfs.nameservices}/file/path,
|
||||||
|
// path need to be first converted to URI, then get the raw path string,
|
||||||
|
// during which {dfs.nameservices} will be omitted.
|
||||||
|
if (path != null ) {
|
||||||
|
String uriPath = path.toUri().getPath();
|
||||||
|
path = uriPath.isEmpty() ? path : new Path(uriPath);
|
||||||
|
}
|
||||||
|
return super.makeQualified(path);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Path getWorkingDirectory() {
|
public Path getWorkingDirectory() {
|
||||||
return this.workingDir;
|
return this.workingDir;
|
||||||
|
|
|
@ -98,4 +98,28 @@ public class ITestAzureBlobFileSystemFileStatus extends
|
||||||
validateStatus(fs, TEST_FOLDER, true);
|
validateStatus(fs, TEST_FOLDER, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testAbfsPathWithHost() throws IOException {
|
||||||
|
AzureBlobFileSystem fs = this.getFileSystem();
|
||||||
|
Path pathWithHost1 = new Path("abfs://mycluster/abfs/file1.txt");
|
||||||
|
Path pathwithouthost1 = new Path("/abfs/file1.txt");
|
||||||
|
|
||||||
|
Path pathWithHost2 = new Path("abfs://mycluster/abfs/file2.txt");
|
||||||
|
Path pathwithouthost2 = new Path("/abfs/file2.txt");
|
||||||
|
|
||||||
|
// verify compatibility of this path format
|
||||||
|
fs.create(pathWithHost1);
|
||||||
|
assertTrue(fs.exists(pathwithouthost1));
|
||||||
|
|
||||||
|
fs.create(pathwithouthost2);
|
||||||
|
assertTrue(fs.exists(pathWithHost2));
|
||||||
|
|
||||||
|
// verify get
|
||||||
|
FileStatus fileStatus1 = fs.getFileStatus(pathWithHost1);
|
||||||
|
assertEquals(pathwithouthost1.getName(), fileStatus1.getPath().getName());
|
||||||
|
|
||||||
|
FileStatus fileStatus2 = fs.getFileStatus(pathwithouthost2);
|
||||||
|
assertEquals(pathWithHost2.getName(), fileStatus2.getPath().getName());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue