Hadoop之HDFS的FileSystem類的使用


   
   

1.導入jar包

解壓hadoop-2.7.7.tar.gz,並在如下路徑找到圖中所示三個jar包

 

下圖所示路徑所有jar包

 

還要用到下面三個jar包

 

 

 下圖所示路徑所有jar包

 把以上jar包全部加入到項目中

 

2.查看文件信息

@Test public void connectHDFS() { Configuration conf = new Configuration();   //做一個配置
        conf.set("fs.defaultFS", "hdfs://192.168.0.51:9000");//服務器的地址 端口號
        try { FileSystem fileSystem = FileSystem.get(conf); FileStatus fileStatus = fileSystem.getFileStatus(new Path("/upload/hello.txt")); System.out.println(fileStatus.isFile()); //判斷是不是一個文件
            System.out.println(fileStatus.isDirectory()); //判斷是不是一個文件夾
            System.out.println(fileStatus.getPath());    //獲取文件路徑
            System.out.println(fileStatus.getLen());    //獲取文件大小
 } catch (IOException e) { // TODO Auto-generated catch block
 e.printStackTrace(); } }

 

3.修改文件名

@Test
public void rename()
{
Configuration configuration = new Configuration();
configuration.set("fs.defaultFS", "hdfs://192.168.0.51:9000");//服務器的地址 端口號
Properties properties = System.getProperties(); //這兩行告訴hadoop訪問時的用戶為root
properties.setProperty("HADOOP_USER_NAME", "root");
try {
FileSystem fileSystem = FileSystem.get(configuration);
boolean rename = fileSystem.rename(new Path("/upload/jdk-8u221-linux-x64.tar.gz"),new Path("/upload/jdk1.8.tar.gz"));
System.out.println(rename?"修改成功!":"修改失敗!");
fileSystem.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

 

4.創建文件夾

@Test public void mkdir() { Configuration configuration = new Configuration(); configuration.set("fs.defaultFS", "hdfs://192.168.0.51:9000"); Properties properties = System.getProperties();     //這兩行告訴hadoop訪問時的用戶為root
        properties.setProperty("HADOOP_USER_NAME", "root"); try { FileSystem fileSystem = FileSystem.get(configuration); fileSystem.mkdirs(new Path("/user")); fileSystem.mkdirs(new Path("/bailiban/yw")); fileSystem.close(); //關閉
        } catch (IOException e) { // TODO Auto-generated catch block
 e.printStackTrace(); } }

 

5.文件上傳

@Test public void upload() { Configuration configuration = new Configuration(); configuration.set("fs.defaultFS", "hdfs://192.168.0.51:9000"); Properties properties = System.getProperties();     //這兩行告訴hadoop訪問時的用戶為root
        properties.setProperty("HADOOP_USER_NAME", "root"); try { FileSystem fileSystem = FileSystem.get(configuration); FSDataOutputStream out = fileSystem.create(new Path("/doupo.txt")); FileInputStream in = new FileInputStream("F:\\doupo.txt"); byte [] b = new byte[1024]; int len = 0; while((len=in.read(b))!=-1) { out.write(b,0,len); } in.close(); out.close(); fileSystem.close(); //關閉
        } catch (IOException e) { // TODO Auto-generated catch block
 e.printStackTrace(); } }

 

6.文件下載

@Test public void download() { Configuration configuration = new Configuration(); configuration.set("fs.defaultFS", "hdfs://192.168.0.51:9000"); Properties properties = System.getProperties();     //這兩行告訴hadoop訪問時的用戶為root
        properties.setProperty("HADOOP_USER_NAME", "root"); try { FileSystem fileSystem = FileSystem.get(configuration); FSDataInputStream in = fileSystem.open(new Path("/upload/hello.txt")); FileOutputStream out = new FileOutputStream(new File("F:\\hello.txt")); byte [] b = new byte [1024]; int len = 0; while((len=in.read(b))!=-1) { out.write(b,0,len); } in.close(); out.close(); fileSystem.close(); //關閉
        } catch (IOException e) { // TODO Auto-generated catch block
 e.printStackTrace(); } }

 

7.遞歸遍歷所有文件和文件夾

@Test public void fileList() { Configuration configuration = new Configuration(); configuration.set("fs.defaultFS", "hdfs://192.168.0.51:9000"); Properties properties = System.getProperties();     //這兩行告訴hadoop訪問時的用戶為root
        properties.setProperty("HADOOP_USER_NAME", "root"); try { FileSystem fileSystem = FileSystem.get(configuration); FileStatus[] listStatus = fileSystem.listStatus(new Path("/")); for (FileStatus fileStatus : listStatus) { digui(fileStatus,fileSystem); } fileSystem.close(); //關閉
        } catch (IOException e) { // TODO Auto-generated catch block
 e.printStackTrace(); } } private void digui(FileStatus fileStatus, FileSystem fileSystem) { String name = ""; if(fileStatus.isDirectory()) { name = fileStatus.getPath()+""; System.out.println("文件夾:"+name.split("9000")[1]); try { FileStatus[] listStatus = fileSystem.listStatus(new Path(name.split("9000")[1])); if(listStatus.length!=0) { for (FileStatus fileStatus2 : listStatus) { digui(fileStatus2,fileSystem); } } } catch (FileNotFoundException e) { // TODO Auto-generated catch block
 e.printStackTrace(); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block
 e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block
 e.printStackTrace(); } } else { System.out.println("文件:"+(fileStatus.getPath()+"").split("9000")[1]); } }

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM