Hadoop 用FileStatus类来查看HDFS中文件或目录的元信息

您所在的位置:网站首页 如何查看hadoop目录 Hadoop 用FileStatus类来查看HDFS中文件或目录的元信息

Hadoop 用FileStatus类来查看HDFS中文件或目录的元信息

2023-05-03 00:23| 来源: 网络整理| 查看: 265

 Hadoop中的FileStatus类可以用来查看HDFS中文件或者目录的元信息,任意的文件或者目录都可以拿到对应的FileStatus, 我们这里简单的演示下这个类的相关API:

/*    */  package com.charles.hadoop.fs;    import java.net.URI;  import java.sql.Timestamp;    import org.apache.hadoop.conf.Configuration;  import org.apache.hadoop.fs.FileStatus;  import org.apache.hadoop.fs.FileSystem;  import org.apache.hadoop.fs.Path;    /**   *   * Description:这个类演示如何通过FileSystem的getFileStatus()方法来获得FileStatus对象   * 进而查询文件或者目录的元信息   *    * 我们这里做2个实验,依次是获取HDFS中的某文件的元信息,获取HDFS中某目录的元信息   *   * @author charles.wang   * @created May 26, 2012 1:43:01 PM   *    */  public class FileMetadataQuerier {        /**       * @param args       */      public static void main(String[] args) throws Exception {          // TODO Auto-generated method stub                                        //读取hadoop文件系统的配置          Configuration conf = new Configuration();          conf.set("hadoop.job.ugi", "hadoop-user,hadoop-user");                    //实验1:查看HDFS中某文件的元信息          System.out.println("实验1:查看HDFS中某文件的元信息");          String fileUri = args[0];          FileSystem fileFS = FileSystem.get(URI.create(fileUri) ,conf);          FileStatus fileStatus = fileFS.getFileStatus(new Path(fileUri));          //获取这个文件的基本信息                if(fileStatus.isDir()==false){              System.out.println("这是个文件");          }          System.out.println("文件路径: "+fileStatus.getPath());          System.out.println("文件长度: "+fileStatus.getLen());          System.out.println("文件修改日期: "+new Timestamp (fileStatus.getModificationTime()).toString());          System.out.println("文件上次访问日期: "+new Timestamp(fileStatus.getAccessTime()).toString());          System.out.println("文件备份数: "+fileStatus.getReplication());          System.out.println("文件的块大小: "+fileStatus.getBlockSize());          System.out.println("文件所有者:  "+fileStatus.getOwner());          System.out.println("文件所在的分组: "+fileStatus.getGroup());          System.out.println("文件的 权限: "+fileStatus.getPermission().toString());          System.out.println();                    //实验2:查看HDFS中某文件的元信息          System.out.println("实验2:查看HDFS中某目录的元信息");          String dirUri = args[1];          FileSystem dirFS = FileSystem.get(URI.create(dirUri) ,conf);          FileStatus dirStatus = dirFS.getFileStatus(new Path(dirUri));          //获取这个目录的基本信息                if(dirStatus.isDir()==true){              System.out.println("这是个目录");          }          System.out.println("目录路径: "+dirStatus.getPath());          System.out.println("目录长度: "+dirStatus.getLen());          System.out.println("目录修改日期: "+new Timestamp (dirStatus.getModificationTime()).toString());          System.out.println("目录上次访问日期: "+new Timestamp(dirStatus.getAccessTime()).toString());          System.out.println("目录备份数: "+dirStatus.getReplication());          System.out.println("目录的块大小: "+dirStatus.getBlockSize());          System.out.println("目录所有者:  "+dirStatus.getOwner());          System.out.println("目录所在的分组: "+dirStatus.getGroup());          System.out.println("目录的 权限: "+dirStatus.getPermission().toString());          System.out.println("这个目录下包含以下文件或目录:");          for(FileStatus fs : dirFS.listStatus(new Path(dirUri))){              System.out.println(fs.getPath());          }                          }    } 

最终显示结果为:

实验1:查看HDFS中某文件的元信息  这是个文件  文件路径: hdfs://192.168.129.35:9000/user/hadoop-user/textfile.txt  文件长度: 93  文件修改日期: 2012-05-26 12:49:04.285  文件上次访问日期: 2012-05-26 12:49:04.285  文件备份数: 1  文件的块大小: 67108864  文件所有者:  hadoop-user  文件所在的分组: supergroup  文件的 权限: rw-r--r--    实验2:查看HDFS中某目录的元信息  这是个目录  目录路径: hdfs://192.168.129.35:9000/user/hadoop-user  目录长度: 0  目录修改日期: 2012-05-26 13:34:10.743  目录上次访问日期: 1970-01-01 08:00:00.0  目录备份数: 0  目录的块大小: 0  目录所有者:  hadoop-user  目录所在的分组: supergroup  目录的 权限: rwxr-xr-x  这个目录下包含以下文件或目录:  hdfs://192.168.129.35:9000/user/hadoop-user/copyMe.txt  hdfs://192.168.129.35:9000/user/hadoop-user/input  hdfs://192.168.129.35:9000/user/hadoop-user/output  hdfs://192.168.129.35:9000/user/hadoop-user/textfile.txt 

 

对于文件,其文件长度,备份数,修改日期,权限信息符合真实情况:

而blocksize,因为我们说了HDFS中默认是64MB = 67108864 Byte

 

 对于目录,长度,备份数,块大小都没有语义,所以这里都为0.

而目录下包含其他信息,包括其下的文件和子目录都是符合真实情况的:



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3