JavaパッケージHDFS API操作


      ......
一:環境紹介
hadoop:2.6
Ubuntu:15.10
eclipse:3.8.1
二:操作は
フォルダが存在するかどうかを判断             isExist(folder); フォルダの作成                                   mkdir(folder);
フォルダの削除                                   rmr(folder); すべてのフォルダを一覧表示                ls(folder); すべてのフォルダを再帰的にリスト                     lsr(folder); ファイルのアップロード                                       put(local, folder); ファイルのダウンロード                                       get(folder,local1); ファイルの削除                                       rm(folder); ファイルの表示                                       cat(folder);
3:コードプレゼンテーション
package user_thing_tuijian;

import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FSDataInputStream;
import org.apache.hadoop.fs.FileStatus;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IOUtils;

public class hdfsGYT {
	
	private static  final String HDFS = "hdfs://127.0.0.1:9000/";

	public hdfsGYT(String hdfs,  Configuration conf ){
		this.hdfsPath = hdfs;
		this.conf = conf;
	}

	public hdfsGYT() {
		// TODO Auto-generated constructor stub
	}

	private String hdfsPath;
	private Configuration conf = new Configuration() ;
	
	public static void main(String[] args) throws IOException, URISyntaxException{
		hdfsGYT hdfsgyt = new hdfsGYT();
		String folder = HDFS + "mr/groom_system/small2.csv";
		String local = "/home/thinkgamer/Java/hadoop_shizhan/src/user_thing_tuijian/small2.csv";
		String local1 = "/home/thinkgamer/Java/hadoop_shizhan/src/user_thing_tuijian";
		//           
		//hdfsgyt.isExist(folder);
		//     
		//hdfsgyt.mkdir(folder);
		//     
		//hdfsgyt.rmr(folder);
		//       
		//hdfsgyt.ls(folder);
		//         
		//hdfsgyt.lsr(folder);
		//    
		//hdfsgyt.put(local, folder);
		//    
		//hdfsgyt.get(folder,local1);
		//    
		//hdfsgyt.rm(folder);
		//    
		//hdfsgyt.cat(folder);
	}

	//    
	private void cat(String folder) throws IOException, URISyntaxException {
		//  hdfs    
		FileSystem fs = FileSystem.get(new URI(HDFS),new Configuration());
		Path path = new Path(folder);
		 FSDataInputStream fsdis = null;
	        System.out.println("cat: " + folder);
	        try {  
	            fsdis =fs.open(path);
	            IOUtils.copyBytes(fsdis, System.out, 4096, false);  
	          } finally {  
	            IOUtils.closeStream(fsdis);
	            fs.close();
	          }
	}

	//    
	private void rm(String folder) throws IOException, URISyntaxException {
		// hdfs    
		FileSystem fs = FileSystem.get(new URI(HDFS),new Configuration());
		Path path = new Path(folder);
		if(fs.deleteOnExit(path)){
			fs.delete(path);
			System.out.println("delete:" + folder);
		}else{
			System.out.println("The fiel is not exist!");
		}
		fs.close();
	}
	
	//    
	private void get(String remote,  String local) throws IllegalArgumentException, IOException, URISyntaxException {
		//     
		FileSystem fs = FileSystem.get(new URI(HDFS), new Configuration());
		fs.copyToLocalFile(new Path(remote), new Path(local));
		System.out.println("Get From :   " + remote  + "   To :" + local);
		fs.close();
	}
	
	//    
	private void put(String local, String remote) throws IOException, URISyntaxException {
		//     
		FileSystem fs = FileSystem.get(new URI(HDFS), new Configuration());
		fs.copyFromLocalFile(new Path(local), new Path(remote));
		System.out.println("Put :" + local  + "   To : " + remote);
		fs.close();
	}

	//         
	private void lsr(String folder) throws IOException, URISyntaxException {
		// hdfs    
		FileSystem fs = FileSystem.get(new URI(HDFS),new Configuration());
		Path path = new Path(folder);
		//           
		FileStatus[] fileList = fs.listStatus(path);
		for (FileStatus f : fileList) {
            System.out.printf("name: %s   |   folder: %s  |   size: %d
", f.getPath(), f.isDir() , f.getLen()); try{ FileStatus[] fileListR = fs.listStatus(f.getPath()); for(FileStatus fr:fileListR){ System.out.printf("name: %s | folder: %s | size: %d
", fr.getPath(), fr.isDir() , fr.getLen()); } }finally{ continue; } } fs.close(); } // private void ls(String folder) throws IOException, URISyntaxException { // hdfs FileSystem fs = FileSystem.get(new URI(HDFS),new Configuration()); Path path = new Path(folder); // FileStatus[] fileList = fs.listStatus(path); for (FileStatus f : fileList) { System.out.printf("name: %s | folder: %s | size: %d
", f.getPath(), f.isDir() , f.getLen()); } fs.close(); } // private void rmr(String folder) throws IOException, URISyntaxException { // hdfs FileSystem fs = FileSystem.get(new URI(HDFS),new Configuration()); Path path = new Path(folder); fs.delete(path); System.out.println("delete:" + folder); fs.close(); } // public void mkdir(String folder) throws IOException, URISyntaxException { // hdfs FileSystem fs = FileSystem.get(new URI(HDFS),new Configuration()); Path path = new Path(folder); if (!fs.exists(path)) { fs.mkdirs(path); System.out.println("Create: " + folder); }else{ System.out.println("it is have exist:" + folder); } fs.close(); } // private void isExist(String folder) throws IOException, URISyntaxException { // hdfs FileSystem fs = FileSystem.get(new URI(HDFS),new Configuration()); Path path = new Path(folder); if(fs.exists(path)){ System.out.println("it is have exist:" + folder); }else{ System.out.println("it is not exist:" + folder); } fs.close(); } }