簡體   English   中英

維護hadoop中文件創建的順序-HDFS

[英]Maintaining the order for file creation in hadoop - hdfs

我有一個在Hadoop DFS中創建文件的代碼。 這些文件的名稱是遞增的(例如1,2,3等)。 這樣做是為了維護所創建文件的正確順序。 但是,當我查看文件時,這些文件以隨機順序顯示(可能是由於文件大小的變化)。

我也有一個代碼作為輸入目錄路徑並讀取其下的所有文件。 但我擔心的是,文件的讀取順序與寫入時的順序不同(讀回的順序與在UI上看到的順序相同)。

我應該如何實現呢? 在編寫文件本身時可以做些事情以保留順序嗎?還是在讀取時需要處理它?

org.apache.hadoop.fs.FileStatus.getModificationTime()提供長值,指示上次修改文件的時間。 這可用於訂購文件。 但似乎不是可行的解決方案,因為我可能有許多文件。

我們是否有任何API類可以為我執行此操作,甚至可以保留順序?

您可以從目錄中訂購文件,如下所示:

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縮短的文件。 也許您可能需要以不同的方式訂購它們,例如我們的名稱或reg。 包含1,2,3段的表達式。 數。

至於管理文件的寫入方式,擊敗了我。 我什么也沒想,只能創建一個同步方法,這可能會在您的應用程序中造成瓶頸。

我希望這有幫助!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM