0

我有一个在 Hadoop dfs 中创建文件的代码。这些文件的名称是递增的(如 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 回答