如何从Hadoop文件系统(HDFS)获取最新文件?

时间:2016-11-22 13:18:44

标签: unix hdfs

我想从HDFS获取最新文件,并且能够在此link的帮助下编写相关内容。这是我正在尝试的。

hdfs dfs -ls /user/data/ | awk -F" " '{print $6" "$7" "$8}'|sort -nr|head|cut -d" " -f3-

但是,此方法也会获得多个文件以及文件夹。以下是执行上述命令的输出。

/user/data/Filled_Elements_Reports
/user/data/Filled_Elements_Source_Reports
/user/data/sampleRandomRec_8.csv
/user/data/sampleRec_8.csv
/user/data/Rec_count_per_report_8.csv
/user/data/sampleRandomRec_208.csv
/user/data/sampleRec_208.csv
/user/data/Rec_count_per_report_208.csv
/user/data/sampleRandomRec_9.csv
/user/data/new_Rec_for_2.csv

我希望只获得以下文件 /user/data/sampleRandomRec_8.csv 从这个文件我想在文件的_之后检索数字(这里是8)。

1 个答案:

答案 0 :(得分:0)

要使用Scala代码从HDFS获取最新文件,请使用以下代码:

val fs = FileSysteam.get(Conf)

val filestatus = fs.liststatus(新org.apache.hadoop.fs.Path(“ / user / data”))

//按修改时间对文件进行排序

val sortedFiles = filestatus.sortBy(filestatus => filestatus.getModificationTime)

//从排序后的文件中获取最后一个文件

val last_modified_File =新路径(sortedFiles.last.getPath.toString)

此last_modified_File是hdfs中最后创建的文件的路径。