zoukankan      html  css  js  c++  java
  • 【HDFS API编程】查看文件块信息

    现在我们把文件都存在HDFS文件系统之上,现在有一个jdk.zip文件存储在上面,我们想知道这个文件在哪些节点之上?切成了几个块?每个块的大小是怎么样?先上测试类代码:

       /**
         * 查看文件块信息
         * @throws Exception
         */
        @Test  
        public void getFileBlockLocations() throws Exception{
            FileStatus fileStatus = fileSystem.getFileStatus(new Path("/hdfsapi/test/jdk.zip"));
            BlockLocation[] blocks = fileSystem.getFileBlockLocations(fileStatus,0,fileStatus.getLen());
            for(BlockLocation block : blocks){
                for(String name : block.getNames() )
                System.out.println(name + " : " + block.getOffset() + " : " + block.getLength());
            }
        }

    我们使用fileSystem的getFileStatus方法获得文件的状态信息,然后使用fileSystem下的getFileBlockLocations方法获取块的信息,然后对块的信息进行迭代。我们点开block.getNames()方法,它返回的是一个字符串类型,因为文件被切成块了所以会有很多的名字,所以我们再对name进行迭代然后进行输出每个块的名字+偏移量+长度。对于API方法的使用还是那句话:哪里不会Ctrl点哪里,源码里面注释写的清楚着呢。

    测试类输出:
    setUp-----------
    log4j:WARN No appenders could be found for logger (org.apache.hadoop.metrics2.lib.MutableMetricsFactory).
    log4j:WARN Please initialize the log4j system properly.
    log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
    192.168.42.110:50010 : 0 : 134217728
    192.168.42.110:50010 : 134217728 : 47150214
    ----------tearDown------
  • 相关阅读:
    centos 7 搭建 LNMP ( Linux+Nginx+MySQL+PHP )
    centos 7 安装 redis-5.0.5
    centos 7 安装 Oracle 12c
    centos 7 SVN安装脚本搭建主从同步灵活切换
    Windwos Java‘bat 环境变量配置脚本
    centso 7 Keepalived 配置脚本
    centos 7 私有云盘 OwnCloud 安装搭建脚本
    Linux fing cd 查找文件/文件夹并进入目录命令
    Linux grep命令 -- 三剑客老三
    基础脚本
  • 原文地址:https://www.cnblogs.com/Liuyt-61/p/10742894.html
Copyright © 2011-2022 走看看