Java Hadoop:使用自定义输入格式拆分大图像文件
我正在处理比hdfs块大的大型地理图像文件。我需要将图像分割成几个条带(例如高度为Java Hadoop:使用自定义输入格式拆分大图像文件,java,hadoop,Java,Hadoop,我正在处理比hdfs块大的大型地理图像文件。我需要将图像分割成几个条带(例如高度为100px),然后对其应用一些处理,最后重建最终图像。 为此,我创建了一个自定义输入格式(继承自FileInputFormat)和一个自定义记录读取器。我以输入格式分割图像,方法是定义几个在记录读取器中读取的FileSplit(对应于一个条带) 我不确定我的拆分过程是否优化了,因为一个条带可以跨2个hdfs块访问,而且我不知道如何将拆分“发送”给最佳工作者(远程读取次数最少的工作者) 目前,我正在使用分割开始偏移来
100px
),然后对其应用一些处理,最后重建最终图像。
为此,我创建了一个自定义输入格式(继承自FileInputFormat)和一个自定义记录读取器。我以输入格式分割图像,方法是定义几个在记录读取器中读取的FileSplit(对应于一个条带)
我不确定我的拆分过程是否优化了,因为一个条带可以跨2个hdfs块访问,而且我不知道如何将拆分“发送”给最佳工作者(远程读取次数最少的工作者)
目前,我正在使用分割开始偏移来获取分割的主体
你有什么建议帮我解决这个问题吗
另外,我正在使用新的Hadoop API如果在单个映射器中处理整个图像是现实的,那么您可能会发现通过使图像文件的块大小大于每个图像的大小来实现完整的数据局部性更简单,并通过一次处理多个图像来获得并行性。使用HIPI在hadoop上进行图像处理, [看看这个,][1]