0

Hadoopdfsでファイルを作成するコードがあります。これらのファイルに付けられた名前は増分です(1、2、3など)。これは、作成されたファイルの適切な順序を維持するために行われます。しかし、ファイルを見ると、これらのファイルはランダムな順序で表示されています(ファイルサイズの違いが原因である可能性があります)。

また、入力ディレクトリパスを取り、その下のすべてのファイルを読み取るコードもあります。しかし、私の懸念は、ファイルが書き込まれるのと同じ順序で読み取られないことです(UIに表示されるのと同じ順序で読み戻されます)。

これをどのように達成する必要がありますか?順序を維持するためにファイル自体を書き込んでいるときにできることはありますか、それとも読み取り中に処理する必要がありますか?

org.apache.hadoop.fs.FileStatus.getModificationTime()は、ファイルが最後に変更された時刻を示す長い値を示します。これを使用してファイルを注文できます。しかし、ファイルがいくつもある可能性があるため、実行可能な解決策ではないようです。

これを実行したり、順序を保持したりできるAPIクラスはありますか?

4

1 に答える 1

0

次のように、ディレクトリからファイルを注文できます。

File file = new File( path );
File[] list = file.listFiles();   

    Arrays.sort(list, new Comparator<File>(){
        public int compare(File f1, File f2)
        {
            return Long.valueOf(f1.lastModified()).compareTo(f2.lastModified());
        } });

リストには、lastModified によって短縮されたすべてのファイルが含まれます。おそらく、名前や登録など、別の方法で注文する必要があるかもしれません。その1,2,3セグを取る表現。番号。

ファイルの書き込み方法の管理に関しては、私を打ち負かします。アプリでボトルネックを引き起こす可能性のある同期メソッドを作成する以外に考えられません。

これが役立つことを願っています!

于 2012-10-17T11:54:54.267 に答える