在hadoop - hdfs中维护文件创建的顺序

时间:2012-10-17 11:24:26

标签: java hadoop hdfs

我有一个在Hadoop dfs中创建文件的代码。给这些文件的名称是增量的(如1,2,3等)。这样做是为了维护所创建文件的正确排序。但是当我查看文件时,这些文件以随机顺序显示(可能是由于文件大小的变化)。

我还有一个代码,它作为输入目录路径并读取其下的所有文件。但我担心的是,文件的读取顺序与写入的顺序不同(按照UI上的顺序读回)。

我应该如何实现这一目标?在编写文件本身以保存订单时是否可以执行某些操作,或者在阅读时是否需要处理它?<​​/ p>

org.apache.hadoop.fs.FileStatus.getModificationTime()给出表示上次修改文件的长值。这可用于订购文件。但似乎不是一个可行的解决方案,因为我可能有任意数量的文件。

我们是否有任何API类可以为我执行此操作,甚至可以保留订购?

1 个答案:

答案 0 :(得分: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 seg的表达式。号。

至于管理文件的编写方式,打败了我。除了创建一个可能会在您的应用中造成瓶颈的同步方法,我想不出什么。

我希望这有帮助!