[英]Read multiple files from S3 and process with Apache Spark
我正在尝试根据S3的LastModifiedDate获取文件集合
List <String> FileNames = new ArrayList<String>();
ListObjectsRequest listObjectsRequest =新的ListObjectsRequest().withBucketName(s3_bucket).withPrefix(logs_dir);
ObjectListing objectListing;
do {
objectListing = s3Client.listObjects(listObjectsRequest);
for (S3ObjectSummary objectSummary :
objectListing.getObjectSummaries()) {
if ((objectSummary.getLastModified().compareTo(dayBefore) > 0) && (objectSummary.getLastModified().compareTo(dayAfter) <1) && objectSummary.getKey().contains(".log"))
FileNames.add(objectSummary.getKey());
}
listObjectsRequest.setMarker(objectListing.getNextMarker());
} while (objectListing.isTruncated());
我想使用Spark处理这些文件
我知道sc.textFile在spark中读取单个文本文件。 但是在我的情况下,列表具有我要读取的所有文件的路径。 有什么方法可以读取列表中所有这些文件?
谢谢你的帮助。
一种简单的选择是使用sc.textfile映射文件名列表,然后合并生成的RDD。
我能够建立一个列表,然后从中创建一个concat字符串,然后将其用作文本文件的一部分
String concatName= "";
for(String fName : FileNames) {
if(FileNames.indexOf(fName) == (FileNames.size() -1)) {
concatName+= "s3n://" + s3_bucket + "/" + fName;
} else {
concatName+= "s3n://" + s3_bucket + "/" + fName + ",";
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.