2013년 8월 6일 화요일

파일 필터링 및 하둡으로 로컬파일 복사

로컬 파일 필터링 출처: http://mudchobo.tistory.com/355
File file=new File("폴더의 경로");
String[] list = file.list(new FilenameFilter()
       {
           @Override
           public boolean accept(File dir, String name)
           {
               return name.startsWith("My.Log");
           }
       });

My.Log로 시작하는 파일을 주어진 폴더(경로)에서 찾아 이름만 반환한다.

        for (int i = 0; i < list.length; i++)
       {
                localSrc="폴더의경로".concat(list[i]);
dst = "복사할경로".concat(list[i]);
in = new BufferedInputStream(new FileInputStream(localSrc));

fs = FileSystem.get(URI.create(dst), conf);
if(fs.exists(new Path(dst))) {
fs.delete(new Path(dst), true);
}
out = fs.create(new Path(dst), new Progressable() {
//64kb 의 데이터 패킷이 데이터 노드 파이프라인에 쓰일 때 마다 하둡에 의해 progress() 메소드가 호출, 마침표를 프린트
public void progress(){
System.out.print(".");
}
});
IOUtils.copyBytes(in,out,4096,true);
       }

폴더의 경로에 파일 이름을 붙여서 파일의 경로를 만들고 복사할 경로에 파일 이름을 붙여서 복사할 위치의 경로를 만들었다.
그리고 IOUtils를 이용해서 출력

참고: http://byulbada.egloos.com/2232184 (BufferedInput/Output)
          http://k.daum.net/qna/openknowledge/view.html?qid=40E1d (파일 필터링)

댓글 없음:

댓글 쓰기