apache-spark - 如何在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);
}
期望是避免重新处理已处理的文件
解决方案
推荐阅读
- java - 如何使用可变整数重复方法?
- python - 在谷歌 colab 中,当我读取 1.5 gb csv 文件时,它占用 6 gb RAM。我已经使用 psutil.virtual_memory().available 进行了检查。是什么原因?
- ruby-on-rails-5 - 活动记录查找返回#
- r - 将 CSV 文件转储到 Postgres 并在 R 中读取,同时保持列数据类型
- python - 来自特定学科的特定学生的加权平均值
- php - 在使用 php 搜索 Mysqli 数据库时遇到一些问题
- javascript - 使用 fetch 和 jwt 拨打电话的问题
- java - 查找用户使用 while 循环输入的整数的所有因子的 Java 代码
- java - 我将如何为 WebView 类实现 OnClick 侦听器
- c# - 如何将实例 getter 作为函数参数传递