在两个日期之间从hdfs提取文件

huwehgph  于 2021-07-13  发布在  Hadoop
关注(0)|答案(0)|浏览(268)

我想提取两个日期之间存储在hdfs中的所有文件。例如,用户选择startdate和enddate返回在这两个日期之间创建的文件。
如下例:如果选择10-11-1984和02-01-2020,则应返回两个文件: file3.txt 以及 file4.txt :

/folder_1/file1.txt  24-20-2021
/folder_1/file2.txt  02-10-2020
/folder_1/file3.txt  10-11-1984
/folder_1/file4.txt  02-01-2020

我有一个函数返回json格式的数据,如下例所示:https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/webhdfs.html#list_a_directory
我做了一个新的函数只取 "modificationTime" 价值观。

public String getmodificationTime(String hdfsPath) 
    {

        if(hdfs!=null)
        {
            try
            {
                Path HdfsPath = new Path(hdfsPath);
                FileStatus[] fileIter = this.hdfs.listStatus(HdfsPath);

                for (int i=0;i<fileIter.length;i++)
                {

                    String path = fileIter[i].getPath().toString(); 

                    // get Modification time from listStatus
                    long modificationTimeLong = fileIter[i].getModificationTime();
                    Date modificationTimeDate = new Date(modificationTimeLong);
                    DateFormat df = new SimpleDateFormat("EEE, d MMM yyyy HH:mm:ss Z"); //Example date format: Wed, 4 Jul 2001 12:08:56 -0700 from java doc
                    String dfDate = df.format(modificationTimeDate); 
                    System.out.println("The file '"+ path + "' was inserted at: "+ dfDate);

                }
            }
            catch(IOException e)
            {
                logger.error("Path: '{}' not exist", hdfsPath, e.getMessage());             
            }

        }
    return dfDate;

这里的问题在于return语句,它不能接受return变量 dfDate :建议: Create local variable dfDate / Create field dfDate / Create parameter dfDate / Create constant dfDate 你能给我建议一个解决方案吗?如何在两个日期之间从hdfs中提取文件?知道我找到了这个解决方案,如何在nifi工作流中获取两个日期之间的hdfs文件数据?
但我认为 hdfs.lastModified 在hdfs客户端中不推荐使用。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题