我想从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)。
答案 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中最后创建的文件的路径。