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

Java 在hadoop-hdfs中维护文件创建顺序,java,hadoop,hdfs,Java,Hadoop,Hdfs,我有一个在Hadoop dfs中创建文件的代码。这些文件的名称是递增的(如1、2、3等)。这样做是为了保持所创建文件的正确顺序。但是当我查看这些文件时,这些文件是以随机顺序显示的(可能是由于文件大小的变化) 我还有一个代码,作为输入目录路径,读取它下面的所有文件。但我担心的是,文件的读取顺序与写入顺序不同(读取顺序与UI上的顺序相同) 我应该如何做到这一点?我在写文件时可以做些什么来保持顺序,还是在阅读时需要处理它 org.apache.hadoop.fs.FileStatus.getModif

我有一个在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());
        } });
File File=新文件(路径);
File[]list=File.listFiles();
sort(list,newcomparator(){
公共整数比较(文件f1、文件f2)
{
返回Long.valueOf(f1.lastModified()).compareTo(f2.lastModified());
} });
现在,该列表包含所有由lastModified短接的文件。也许您需要以不同的方式订购,如按姓名或注册号订购。采用该1,2,3 seg的表达式。号码

至于如何管理文件的编写方式,我不知道。除了创建一个同步方法之外,我想不出任何东西,这可能会在你的应用程序中造成瓶颈

我希望这有帮助