개요

하둡에 연결하여 파일을 List 하는 코드를 작성하여 정리해둔다.

로컬에서 하둡 2.6.0 로컬에서 구축 후 파일 업로드 해보기를 이용하여 셋팅후 돌려보았다. 해당 코드는 일부 파일을 삭제하는 용도로 사용하였다.

코드 스니펫

@Test
public void testList() throws IOException, ParseException {
    Configuration configuration = new Configuration();
    FileSystem hdfs = FileSystem.get(URI.create(HDFS_URI), configuration);
    FileStatus[] fileStatus = hdfs.listStatus(new Path(TARGET_PATH));

    for (FileStatus status : fileStatus) {
        FileStatus[] fileStatus2 = hdfs.listStatus(new Path(status.getPath().toString()));
        for (FileStatus status2 : fileStatus2) {
            if (hdfs.isDirectory(status2.getPath())) {
                String deletePath = checkToBeDeleted(status2.getPath().toString());
                if (!StringUtils.isEmpty(deletePath)) {
                    System.out.println("to be deleted = " + deletePath);
                    hdfs.delete(new Path(deletePath), true);
                }
            }
        }
    }

    RemoteIterator<LocatedFileStatus> ri = hdfs.listFiles(new Path(TARGET_PATH), true);
    while (ri.hasNext()) {
        LocatedFileStatus result = ri.next();
        String deletePath = checkToBeDeleted(result.getPath().toString());
        if (!StringUtils.isEmpty(deletePath)) {
            System.out.println("to be deleted = " + deletePath);
            hdfs.delete(new Path(deletePath), true);
        }
    }
}