如何过滤 S3 文件作为 Amazon EMR 的输入?

How to filter S3 files as input for Amazon EMR?

我正在尝试 运行 Amazon EMR Hadoop 进程,它将处理 S3 存储桶中的 CloudFront 日志。由于 CloudFront 在同一个存储桶中生成大量日志,如何在不为 S3 访问生成额外带宽的情况下过滤日志文件?

我发现我可以使用 FileSystem.globStatus() 从 CloudFront 日志存储桶中快速过滤文件:

FileSystem fs = new Path("s3://logs").getFileSystem(conf);
for (FileStatus fileStatus: fs.globStatus("s3://logs/prefix-2015-11-01*")) {
   if (fileStatus.isFile()) {
      FileInputFormat.addInputPath(myJob, fileStatus.getPath());
   }
}