繁体   English   中英

从S3读取多个文件并使用Apache Spark处理

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM