2017-01-06 9 views
0

私は、次のメソッドを介してEMRのHDFS上のディレクトリにあるすべてのファイルを表示しようとしています:リストファイルScalaの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) 

ダウンロードが完了するまで待つ必要がありますので、それを続行します。