實現HDFS數據上傳和下載代碼

ff6m 9年前發布 | 8K 次閱讀 Java

    import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.URI;
import java.net.URISyntaxException;

import org.apache.hadoop.conf.Configuration;  
import org.apache.hadoop.fs.FileSystem;  
import org.apache.hadoop.fs.Path;  
import org.apache.hadoop.io.IOUtils;  
import org.junit.Before;  
import org.junit.Test;  

/* 
 1、通過代碼來操作HDFS 
 2、實現了下載、上傳文件的功能 
 */  
public class HDFSDemo {   
    /* 
     1、通過代碼來操作HDFS 
     2、實現了下載功能 
     */   
    public static void main(String[] args) throws IOException, URISyntaxException {  
        //與master建立聯系  
        FileSystem fs =FileSystem.get(new URI("hdfs://master:9000"), new Configuration());  
        //通過流方式讀取HDFS中的文件,將文件讀入到內存當中  
        InputStream in  = fs.open(new Path("/user/guest/esri/xiaojson/xiao.json"));  
        //輸出路徑  
        OutputStream out = new FileOutputStream("D://xiao.json");  
        //工具類將in中的內容copy到out中,大師級默認都是4096  
        IOUtils.copyBytes(in, out, 4096, true);  
    }  
    /* 
     1、通過代碼來操作HDFS 
     2、實現了下載功能,通過一句話實現下載 
     */   
    @Test  
    public void testDownLoad() throws IllegalArgumentException, IOException{  
        fs.copyToLocalFile(new Path("/user/guest/esri/xiaojson/xiao.json"), new Path("D://xiao1.json"));  
    }  

    FileSystem fs = null;  
    @Before  
    public void init() throws IOException, URISyntaxException, InterruptedException{  
        //創建FileSystem的實現類 (工具類)與master建立聯系  
        fs =FileSystem.get(new URI("hdfs://master:9000"), new Configuration(),"guest");  
    }  
    /* 
     1、通過代碼來操作HDFS 
     2、實現了上傳功能 
     */   
    @Test  
    public void testUpload() throws IOException{  
        //讀取本地文件系統的文件,返回輸入流  
        InputStream in = new FileInputStream("D://xiao123.json");  
        //在HDFS上創建一個文件,返回輸出流  
        OutputStream out = fs.create(new Path("/test.jar"));  
        //工具類將in中的內容copy到out中,大師級默認都是4096  
        IOUtils.copyBytes(in, out, 4096, true);  
    }   

}  </pre> 


 本文由用戶 ff6m 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!