Java Hadoop:为映射对文件进行分组

Java Hadoop:为映射对文件进行分组,java,apache,hadoop,mapreduce,Java,Apache,Hadoop,Mapreduce,我正在通过Hadoop开发一个程序,这对我来说是比较新的,所以如果能给我一个关于我计划做什么的概念的建议,我将不胜感激 我有一个1…n图像的大有序集。图像在逻辑上分为几个组,每个组都可以独立处理。但是,在一个组中,所有图像都是相关的,因此应通过单个映射任务进行处理。图像本身很小,因此同时将它们加载到内存中应该没有问题 我想把每个组打包成一个单独的SequenceFile,但似乎没有办法从InputStream读取SequenceFile…或者,也许,有一种方法可以为一个MapReduce作业分配

我正在通过Hadoop开发一个程序,这对我来说是比较新的,所以如果能给我一个关于我计划做什么的概念的建议,我将不胜感激

我有一个1…n图像的大有序集。图像在逻辑上分为几个组,每个组都可以独立处理。但是,在一个组中,所有图像都是相关的,因此应通过单个映射任务进行处理。图像本身很小,因此同时将它们加载到内存中应该没有问题


我想把每个组打包成一个单独的SequenceFile,但似乎没有办法从InputStream读取SequenceFile…或者,也许,有一种方法可以为一个MapReduce作业分配M个不同的节点,这样每个节点都可以直接从HDFS读取其SeqFile?

我解决了类似的问题,方法是将图像编码成一个带有base64的字符串,然后在预处理阶段将它们全部放入JSON对象的数组字段中


此外,如果您将JSON存储为一种格式,那么您将在映射器中对您的对象有好处。

您可能需要查看CombineFileInputFormat,这将帮助您根据路径过滤器对输入进行分组,例如按文件夹分组。每个组都可以构造为一个单独的分割,由一个map任务处理。因为映射任务的数量=分割的数量

您的需求似乎与类似。请检查