将包含不同格式数据的两个文件传递给映射器

时间:2012-01-14 06:53:16

标签: hadoop

我有5个图像文件(每个图像文件小于5MB)。

ImageDir/Image1 = {ImageID1 <image in binary form>}
...
ImageDir/Image5 = {ImageID5 <image in binary form>}

还有一些文本数据也与图像相关联,

ImageData/Image1_data = {ImageID1 <text data>}
...
ImageData/Image5_data = {ImageID5 <text data>}

我希望每个图像及其文本数据都转到一个映射器。我该如何实现这一目标?我知道每个图像都会转到一个映射器,但是如何确保不同形式的图像文本数据也会转到同一个映射器。

1 个答案:

答案 0 :(得分:0)

  1. 最简单的方法是使用脚本以自动方式将图像和相关数据合并到一个文件(gz,tar等)中,让映射器处理它。

  2. AFAIK,Hadoop OOB不支持此功能。因此,需要对custom InputFormat进行编码。不会推荐这种方法,因为图像和相关数据可能位于不同的节点上,并且在作业执行期间会有大量数据混洗。