首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获取HDFS上存在的文件的创建日期?

如何获取HDFS上存在的文件的创建日期?
EN

Stack Overflow用户
提问于 2017-11-27 18:46:23
回答 1查看 7.3K关注 0票数 1

我正在开发一个Scala-Spark程序,它需要从HDFS上的目录中获取最新创建的文件(每天在目录中创建一个文件),并读取其中的数据进行进一步处理。从我的研究中,我发现了下面的代码,可以使用Scala获取两天前的文件:

代码语言:javascript
复制
import java.nio.file._
import java.time._
import java.time.temporal.ChronoUnit.DAYS
val isMoreThan2DaysOld = Files.getLastModifiedTime(path).toInstant.plus(2, DAYS) isBefore Instant.now

但此代码不适用于HDFS上存在的文件。有人能告诉我如何使用Scala从HDFS上的目录中挑选最新创建的文件吗?

EN

回答 1

Stack Overflow用户

发布于 2017-11-27 19:35:44

您可以在scala中使用普通的hadoop文件系统Apis来获取文件的修改日期。然后选最新的。

代码语言:javascript
复制
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;

val conf = spark.sparkContext.hadoopConfiguration
val fs = FileSystem.get(conf)
val dirPath = new Path("csvdatatest")
val filestatus = fs.listStatus(dirPath )
filestatus.foreach(f => println(f.getModificationTime))

这将以降序列出所有文件的文件修改/创建日期。您可以选择最新的文件作为第一个文件。

注意:如果使用sparkcontext获取hadoop配置,则不需要在配置中显式指定core-site.xml和hdfs-site.xml。正如我在上面所使用的。

但是您可以按照以下伪代码创建配置:指定core-site.xml和hdfs-site.xml的路径

代码语言:javascript
复制
val conf = new Configuration();
conf.addResource(new Path("<core-site-path>/core-site.xml"));
conf.addResource(new Path("<hdfs-site-path>/hdfs-site.xml"));
val fs = FileSystem.get(conf);
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47509087

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档