通过Spark查询Amazon S3对象元数据

时间:2017-07-27 13:52:53

标签: apache-spark amazon-s3

Spark 2.1.x在这里。我有一个Spark集群,配置为从/向Amazon S3读取/写入。我可以这样成功完成这个:

val s3Path = "/mnt/myAwsBucket/some/*.json"
val ds = spark.read.json(s3Path)

到目前为止一切顺利 - 如果该位置有多个JSON文件,它会将所有JSON文件读入单个Dataset。我想以某种方式获取我读取的每个JSON文件的Last Modified时间戳,并将其存储在日期时间数组中。因此,如果我正在阅读20个JSON文件,我最终会得到一个包含20个日期时间的数组。

知道我怎么做这个吗?看看Spark API文档我没有看到任何方法来查询S3对象的元数据......

1 个答案:

答案 0 :(得分:1)

您不通过Spark API查询import com.amazonaws.services.s3.AmazonS3Client val lastModified = new AmazonS3Client().getObject("myBucket","path/to/file").getObjectMetadata.getLastModified 信息,而是通过AWS S3 SDK查询。你可以这样做:

AmazonS3Client

显然,您必须通过Maven下载AWS S3 SDK并包含依赖项。另外我认为他们可能已经弃用了较新版本的SDK中的<!DOCTYPE HTML> <html> <head><title>Chrome test</title></head> <body> <div class="text">Hallo</div> <script> const range = document.createRange() range.selectNode(document.querySelector('.text')) window.getSelection().addRange(range) window.getSelection().addRange(range) </script> </body> </html> ,因此您可能需要根据下载的SDK版本进行细微更改:)