2017-01-06 4 views
0

나는 다음과 같은 방법을 통해 EMR의 HDFS의 디렉토리에있는 모든 파일을 나열하려합니다 :목록 파일 스칼라 EMR HDFS (CSV 파일 누락)

val directory = new File(directoryPath) 
val fileStatusListIterator: RemoteIterator[LocatedFileStatus] = FileUtils.fs.listFiles(new Path(directoryPath), true) 
while (fileStatusListIterator.hasNext) { 
    val fileStatus = fileStatusListIterator.next 
    if (fileStatus.isFile) { 
    log.info(s"Iterator File Path: ${fileStatus.getPath}") 
    } 
} 

내 문제 :이 CSV 파일을 제외하고 모든 것을 나열됩니다.

+0

"csv 파일"은 실제로 _directories_ 아닌가요? 일부 분산 처리 엔진 (MapReduce/Spark)에 의해 작성된 경우, 내부에 "부분"파일이있는 디렉토리 일 수 있으며 코드가 디렉토리를 건너 뜁니다. –

+0

조건을 제거했으며 CSV 파일이없는 동일한 결과를 제거했습니다. –

답변

1

이유를 찾았습니다. 왜냐하면 내가 리스팅 전에 정확히이 CSV 파일을 다운로드했기 때문입니다. 즉, 파일이 이터레이터에서 걸리는 시간에 맞추지 못했음을 의미합니다. 따라서 다음을 사용해야합니다.

Future.Await(Downloading,Duration.Inf) 

다운로드가 완료 될 때까지 기다려야합니다.