apache-spark - 通过 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 上我找不到任何文档。
谢谢
解决方案
您只需使用 Hadoop FileSystem API,使用 listStatusIterator()/listFiles() 来获取迭代器并扫描,FileStatus.getModificationTime()
为您提供最后修改的字段。
但请注意:大文件上传的 S3 时间戳是上传开始的时间,而不是完成的时间。一个需要几分钟才能上传的大文件会比在上传期间发生的单个 PUT 中上传的小文件看起来更旧。
推荐阅读
- python - 如何在 Python 中进行并行处理?
- node.js - 无法在 Nodejs 中连接本地 PostgreSQL 数据库
- java - 如何在 RecyclerView 中显示同一联系人的多个电话号码?
- apache-kafka - 使用 kafka 流尝试将消息从输入主题写入输出主题
- r - 我的 R 函数旨在将参与者随机分配到组并模拟手段差异,但并未通过管道运行
- ios - 有没有办法在不取回 Firestore 中的文档的情况下侦听集合中的更改
- javascript - 在自定义挂钩中将类型分配给事件处理程序
- node.js - Windows 中的路径系统
- ruby-on-rails - 汇总用户 Ruby on Rails 6 选定月份、年份的每周记录
- jenkins - 在 Jenkins 中构建完成后如何在电子邮件中添加 Bit Bucket 提交详细信息