2015-05-20 74 views
2

我想從S3閱讀從S3和處理多個文件與Apache星火

List <String> FileNames = new ArrayList<String>(); 

ListObjectsRequest listObjectsRequest =新ListObjectsRequest() .withBucketName(s3_bucket) .withPrefix獲得根據LastModifiedDate文件的集合(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()); 

我想用星火

我明白sc.textFile讀取火花一個文本文件來處理這些文件。但在我的情況下,List有我想要讀取的所有文件的路徑。有什麼方法可以讀取列表中的所有文件?

感謝您的幫助。

回答

0

一個簡單的選擇是將文件名列表映射到sc.textfile,然後將結果RDD合併。

0

我是能夠建立一個列表,然後創建一個字符串的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 + ","; 
     } 
    }