为什么hadoop filesystem.get方法需要知道完整的uri而不仅仅是scheme

6g8kf2rb  于 2021-06-03  发布在  Hadoop
关注(0)|答案(2)|浏览(296)

是否可以使用从任何有效的hdfs url创建的hadoop文件系统示例来再次用于读写不同的hdfs url

String url1 = "hdfs://localhost:54310/file1.txt";
String url2 = "hdfs://localhost:54310/file2.txt";
String url3 = "hdfs://localhost:54310/file3.txt";

//Creating filesystem using url1
FileSystem fileSystem = FileSystem.get(URI.create(url1), conf);

//Using same filesystem with url2 and url3  
InputStream in = fileSystem.open(new Path(url2));
OutputStream out = fileSystem.create(new Path(url3));

这是可行的,但这会引起其他问题吗。

0qx6xfy6

0qx6xfy61#

对于不同的dfs路径,create/open方法将失败。查看org.apache.hadoop.fs.filesystem#checkpath方法。

7gcisfzg

7gcisfzg2#

你当然可以创建一个 FileSystem 你的计划和地址,然后通过 FileSystem .

Configuration conf = new Configuration();
conf.set("fs.default.name","hdfs://localhost:54310");
FileSystem fs = FileSystem.get(conf);
InputStream is = fs.open(new Path("/file1.txt"));

相关问题