我对Hadoop相对较新,到目前为止我唯一的经验是wordcount问题。
我想要完成的事情: 我正在尝试编写mapreduce作业,将JPEG格式的图像转换为base64格式。图像将全部保存在一个目录中。我需要从这个目录中读取图像并将图像转换为mapper中的base64字符串。 然后在我的reducer中,我需要为所有图像组合base64字符串,并将它们整合到一个log / txt文件中。
我面临的问题: 我输入格式有问题。网上的大多数示例仅显示使用文本输入格式。在编写普通的java程序将图像转换为base64时,我使用了BufferedImage类。我想知道它是否可以为mapreduce定义输入格式,以便我可以使用图像,如果是的话,我们应该做什么。
提前谢谢你!
答案 0 :(得分:1)
根据我的想法,您有以下选择:
1-使用HIPI(Hadoop图像处理接口),它提供了许多图像处理工具
2-使用第三方图像输入格式,如ImageInputFormat
3-使用第三方WholeFileInputFormat一次读取一个完整的图像,但它将作为整个文件读取,因此您需要解析它。
3-如果所有图像的字节大小相同,则可以使用FixedLengthInputFormat。但是,根据您的图像,可能需要进行解析。
4-如果这些都不适合您,那么您可能需要阅读一些有关如何制作适合您目的的输入格式的信息。你可以在Hadoop:The Definitive Guide一书中找到一个很好的教程,或here
祝你好运