首页 > 解决方案 > 通过 PySpark 获取 S3 中的最新文件

问题描述

无论如何可以通过 Pyspark 获取 S3 存储库中的最后一个文件吗?

我设法使用以下代码用 Python 做到了这一点:

paginator = client.get_paginator('list_objects_v2')
pages = paginator.paginate(Bucket=Bucket, Prefix=Path)
for page in pages:
   for obj in page['Contents']:
       latest = max(page['Contents'], key=lambda x: x['LastModified'])

在 Spark 上我找不到任何文档。

谢谢

标签: apache-sparkamazon-s3pyspark

解决方案


您只需使用 Hadoop FileSystem API,使用 listStatusIterator()/listFiles() 来获取迭代器并扫描,FileStatus.getModificationTime()为您提供最后修改的字段。

但请注意:大文件上传的 S3 时间戳是上传开始的时间,而不是完成的时间。一个需要几分钟才能上传的大文件会比在上传期间发生的单个 PUT 中上传的小文件看起来更旧。


推荐阅读