Hadoop의 FileSystem open 방법을 이용하여 FSDataInputStream을 가져와 파일을 로컬 Hadoop 버전 2.7.0으로 다운로드합니다

4374 단어 HadoopHDFS2.7

Hadoop의 FileSystem open 방법을 이용하여 FSDataInputStream을 가져와 파일을 로컬 Hadoop 버전 2.7.0으로 다운로드합니다


Hadoop의 FileSystem open 방법을 이용하여 FSDataInputStream을 가져와 파일을 로컬 Hadoop 버전 2.7.0으로 다운로드합니다

코드

package com.feng.test.hdfs.filesystem;

import java.io.FileOutputStream;
import java.net.URI;

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

/**
 *                liunx    /etc/hosts    10.11.12.4 master
 * 
 * @author feng
 *
 */

public class DownloadFile {

    public static void main(String[] args) {
        FileSystem hdfs = null;
        FSDataInputStream fsdInputStream = null;
        FileOutputStream fos = null;
        try {
            String fsrc = "/feng/tmp/1462950193038";
            String destDir = "/Users/feng/Downloads/83.txt";

            Configuration config = new Configuration();
            //     
            config.set("fs.default.name", "hdfs://master:9000");

            hdfs = FileSystem
                    .get(new URI("hdfs://master:9000"), config, "feng");

            Path srcPath = new Path(fsrc);
            fsdInputStream = hdfs.open(srcPath);

            fos = new FileOutputStream(destDir);

            byte[] buff = new byte[1024];
            int readCount = 0;
            readCount = fsdInputStream.read(buff);
            while (readCount != -1) {
                fos.write(buff, 0, readCount);
                readCount = fsdInputStream.read(buff);
            }

            System.out.println("It is over !");
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if(fos != null){
                try{
                    fos.close();
                }catch(Exception e){
                    e.printStackTrace();
                }
            }
            if(fsdInputStream != null){
                try{
                    fsdInputStream.close();
                }catch(Exception e){
                    e.printStackTrace();
                }
            }
            if (hdfs != null) {
                try {
                    hdfs.closeAll();
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        }
    }

}

좋은 웹페이지 즐겨찾기