2015-05-20 5 views
2

Я пытаюсь получить набор файлов в соответствии с LastModifiedDate от S3Считывание нескольких файлов из S3 и процесса с Apache Спарк

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()); 

Я хотел бы обрабатывать эти файлы с помощью Спарка

Я понимаю, что sc.textFile читает один текстовый файл в искре. Но в моем случае в списке есть пути всех файлов, которые я хочу прочитать. Есть ли способ прочитать все эти файлы, которые являются частью списка?

Благодарим за помощь.

ответ

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 + ","; 
     } 
    }