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

发布于 2024-11-25 12:33:19 字数 469 浏览 0 评论 0原文

我正在尝试使用自定义 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 列出我的所有文件?

I'm trying to run a job on Elastic MapReduce (EMR) with a custom jar. I'm trying to process about a 1000 files in a single directory. When I submit my job with the parameter s3n://bucketname/compressed/*.xml.gz, I get a "matched 0 files" error. If I pass just the absolute path to a file (e.g. s3n://bucketname/compressed/00001.xml.gz), it runs fine, but only one file gets processed. I tried using the name of the directory (s3n://bucketname/compressed/), hoping that the files within will be processed, but that just passes the directory to the job.

At the same time, I have a smaller local hadoop installation. In that, when I pass my job with wildcards (/path/to/dir/on/hdfs/*.xml.gz), it works fine and all 1000 files are listed correctly.

How do I get EMR to list all my files?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

弃爱 2024-12-02 12:33:19

我不知道 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());
        }

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

I don't know how EMR lists all the files, but here's a piece of code which works for me:

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

It will list all the files which are in the input directory, and you can do to those anything that you will

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文