Hadoop 防止MapReduce程序中的输入拆分

Hadoop 防止MapReduce程序中的输入拆分,hadoop,mapreduce,Hadoop,Mapreduce,我需要为map reduce程序输入文件。但该文件不应被拆分并作为一个整体传递给map函数。一个选项是将issplitable设置为false,但如何执行此操作?1)通常,当文件扩展名为.gz时,issplitable返回false 或 2) 您可以编写自己的InputFormat覆盖isSplitable 或 3) 不要试图使isSplitable返回为false。而是将文件的块大小设置为大于文件大小: hadoop fs-D fs.local.block.size=100000000-put

我需要为map reduce程序输入文件。但该文件不应被拆分并作为一个整体传递给map函数。一个选项是将issplitable设置为false,但如何执行此操作?

1)通常,当文件扩展名为.gz时,issplitable返回false

2) 您可以编写自己的InputFormat覆盖isSplitable

3) 不要试图使isSplitable返回为false。而是将文件的块大小设置为大于文件大小:


hadoop fs-D fs.local.block.size=100000000-put local\u name remote\u location要做到这一点,您需要编写一个自定义输入类来扩展FileInputFormat,在这个类中,您需要重写名为isSplittable的方法以返回false

谢谢@EvgenyBenediktov。我需要在map函数中处理文件,所以我需要map中的文件名。它应该像多个文件(如果存在)一样,文件名应该是键,文件内容作为一个整体应该是值,并且文件不应该像常规过程那样拆分。要在map中获取文件名,请调用:context.getInputSplit().getPath();要将文件的上下文作为单个值获取,请通过以下方式实现WholeFileInputFormat和WholeFileRecordReader:,