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对象的元数据......
答案 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版本进行细微更改:)