HDFS的API操作查看某个文件在HDFS集群中的位置怎么做?
查看某个文件在HDFS集群中的位置:通过“FileSystem.getFileBlockLocation(FileStatus file,long start,long len)”可以查看指定文件所在位置。
具体代码如下:``` package HDFS.learnself;
import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.BlockLocation; import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path;
public class WhereFile { public static void main(String[] args) throws IOException, InterruptedException, URISyntaxException {
//1.加载hdfs的配置文件 Configuration conf=new Configuration();
//2.获取hdfs的操作对象 FileSystem fs=FileSystem.get(new URI("hdfs://hdp01:9000"), conf, "hdp02");
//3.需要查找文件的路径 Path File=new Path("/test/fur01.txt");
//4.创建FileStatus对象,调用getFileStatus方法 FileStatus filestatus=fs.getFileStatus(File);
//5.创建一个BlockLocation数组对象,调用getFileBlockLocations方法 BlockLocation [] blkLocations=fs.getFileBlockLocations(filestatus, 0, filestatus.getLen()); int blockLen=blkLocations.length; for(int i=0;i<blockLen;i++){ String [] hosts=blkLocations[i].getHosts(); System.out.println("blockID:"+i+"\n"+"location:"+hosts[0]); } }
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。