首页 > 解决方案 > 如何在spark中跟踪hdfs中已处理的文件

问题描述

所以我有一个每小时运行的火花作业。该作业处理来自 HDFS 的文件。所以我需要知道的是有一种有效的方法来跟踪 HDFS 中已经处理的那些文件。无法移动/删除/重命名文件

我尝试的是将所有文件名及其最后修改时间存储在地图中,并将地图的最后一个条目存储在某处(比如 /user/xyz -> 159283742893472 是我的最后一个地图条目),所以当工作再次开始时我可以使用存储的详细信息并仅处理 159283742893472 以外的详细信息(159283742893472 是以毫秒为单位的时间)

FileStatus[] fileStatusArray = fileSystem.listStatus(newPath(path));

for (FileStatus fileStatus : fileStatusArray) {
    long modificationTime =fileStatus.getModificationTime();
    filesMap.put(fileStatus.getPath().getName(), modificationTime);
}

期望是避免重新处理已处理的文件

标签: apache-sparkhadoophdfs

解决方案


推荐阅读