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

Apache spark 通过Spark查询Amazon S3对象元数据,apache-spark,amazon-s3,Apache Spark,Amazon S3,这里是Spark 2.1.x。我有一个Spark集群,配置为从AmazonS3读/写。我可以这样成功地做到这一点: val s3Path = "/mnt/myAwsBucket/some/*.json" val ds = spark.read.json(s3Path) 到目前为止还不错——如果在该位置有多个JSON文件,它会将所有文件读入一个数据集。我希望以某种方式获得我读取的每个JSON文件上最后修改的时间戳,并将其存储在datetimes数组中。因此,如果我正在读取20个JSON文件,那么

这里是Spark 2.1.x。我有一个Spark集群,配置为从AmazonS3读/写。我可以这样成功地做到这一点:

val s3Path = "/mnt/myAwsBucket/some/*.json"
val ds = spark.read.json(s3Path)
到目前为止还不错——如果在该位置有多个JSON文件,它会将所有文件读入一个
数据集。我希望以某种方式获得我读取的每个JSON文件上最后修改的时间戳,并将其存储在datetimes数组中。因此,如果我正在读取20个JSON文件,那么最终会得到一个包含20个日期时间的数组


知道怎么做吗?查看Spark API文档,我看不到任何查询S3对象元数据的方法…

您不会通过Spark API查询
S3
信息,而是通过AWS S3 SDK。您可以这样做:

import com.amazonaws.services.s3.AmazonS3Client

val lastModified = new AmazonS3Client().getObject("myBucket","path/to/file").getObjectMetadata.getLastModified
显然,您必须通过Maven下载AWSS3SDK并包含依赖项。此外,我认为他们可能已经在较新版本的SDK中弃用了
AmazonS3Client
,因此您可能需要根据您下载的SDK版本进行轻微更改:)