Amazon Elastic MapReduce上的多个文件作为输入

Sha*_*wal 6 java amazon-emr

我正在尝试使用自定义jar在Elastic MapReduce(EMR)上运行一个作业.我正在尝试在一个目录中处理大约1000个文件.当我使用参数提交作业时s3n://bucketname/compressed/*.xml.gz,出现"匹配的0个文件"错误.如果我只传递一个文件的绝对路径(例如s3n://bucketname/compressed/00001.xml.gz),它运行正常,但只处理一个文件.我尝试使用目录(s3n://bucketname/compressed/)的名称,希望将处理其中的文件,但这只是将目录传递给作业.

与此同时,我有一个较小的本地hadoop安装.在那里,当我通过通配符(/path/to/dir/on/hdfs/*.xml.gz)传递我的工作,它工作正常,所有1000个文件都正确列出.

如何让EMR列出我的所有文件?

Ars*_*ray 2

我不知道 EMR 如何列出所有文件,但这里有一段对我有用的代码:

        FileSystem fs = FileSystem.get(URI.create(args[0]), job.getConfiguration());
        FileStatus[] files = fs.listStatus(new Path(args[0]));
        for(FileStatus sfs:files){
            FileInputFormat.addInputPath(job, sfs.getPath());
        }
Run Code Online (Sandbox Code Playgroud)

它将列出输入目录中的所有文件,您可以对这些文件执行任何您想要的操作