下面是我的 s3 存储桶文件夹结构的样子,
s3://s3bucket/folder1/morefolders/$folder_which_I_want_to_pick_latest/
$folder_which_I_want_to_pick_latest
- 对于每个进入的新文件夹,此文件夹始终可以有一个递增的编号,例如 randomnumber_timestamp
有没有一种方法可以通过始终从 Scala 中的 Spark 读取 s3 中的最新文件夹来自动化此过程
最佳答案
处理这种“行为”的最佳方法是将数据构建为分区方法,例如 year=2020/month=02/day=12
,其中每个分区都是一个文件夹(在 aws-console
中)。通过这种方式,您可以在 spark
上使用简单的filter
来确定最新的。 (更多信息:https://www.datio.com/iaas/understanding-the-data-partitioning-technique/)
但是,如果您不被允许重新构建存储桶,并且您没有可用于计算最新文件夹的特定标识符和/或引用,那么该解决方案的成本可能会很高。请记住,在 s3
中,您没有文件夹的概念,只有一个对象键
(在这里您可以看到 /
并且在aws console
中可以可视化为文件夹),因此,计算$folder_which_I_want_to_pick_latest
中的最高增量ID将最终 checkin 存储在存储桶中的所有对象和每个对象-s3 中的请求成本。更多信息:https://docs.aws.amazon.com/AmazonS3/latest/user-guide/using-folders.html 。
关于scala - 始终从 Spark 中的 s3 存储桶读取最新文件夹,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59939539/