개요
하둡에 연결하여 파일을 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);
}
}
}