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

fae0ux8s  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(325)

我有一个在hadoop中创建文件的代码。这些文件的名称是递增的(如1、2、3等)。这样做是为了保持所创建文件的正确顺序。但是当我查看这些文件时,这些文件是以随机顺序显示的(可能是由于文件大小的变化)。
我还有一个代码,作为输入目录路径,读取它下面的所有文件。但我担心的是,读取文件的顺序与写入文件的顺序不同(读取的顺序与在ui上看到的顺序相同)。
我应该如何做到这一点?在写文件时,我能做些什么来保持顺序,还是在阅读时需要处理它?
org.apache.hadoop.fs.filestatus.getmodificationtime()给出一个长值,指示上次修改文件的时间。这可以用来订购文件。但似乎不是一个可行的解决方案,因为我可能有任何数量的文件。
我们有什么api类可以为我做到这一点,甚至保持秩序?

cnjp1d6j

cnjp1d6j1#

您可以从如下目录订购文件:

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段的表达式。号码。
至于如何管理文件的编写方式,我觉得很难。除了创建一个同步方法,我什么都想不出来,它可能会在你的应用程序中造成瓶颈。
我希望这有帮助!

相关问题