Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何强制Hadoop在没有扩展的情况下解压输入?_Hadoop_Mapreduce_Emr_Elastic Map Reduce_Amazon Emr - Fatal编程技术网

如何强制Hadoop在没有扩展的情况下解压输入?

如何强制Hadoop在没有扩展的情况下解压输入?,hadoop,mapreduce,emr,elastic-map-reduce,amazon-emr,Hadoop,Mapreduce,Emr,Elastic Map Reduce,Amazon Emr,我正在运行map reduce,输入是gzip的,但没有.gz(文件名)扩展名 通常,当它们具有.gz扩展名时,Hadoop会在将它们传递给映射程序之前动态地将其解压缩。但是,如果没有扩展,它不会这样做。我不能重命名我的文件,所以我需要某种“强制”Hadoop解压缩它们的方法,即使它们没有.gz扩展名 我尝试将以下标志传递给Hadoop: 步骤参数=[“-jobconf”,“stream.recordreader.compression=gzip”, “-jobconf”,“mapred.out

我正在运行map reduce,输入是gzip的,但没有.gz(文件名)扩展名

通常,当它们具有.gz扩展名时,Hadoop会在将它们传递给映射程序之前动态地将其解压缩。但是,如果没有扩展,它不会这样做。我不能重命名我的文件,所以我需要某种“强制”Hadoop解压缩它们的方法,即使它们没有.gz扩展名

我尝试将以下标志传递给Hadoop:

步骤参数=[“-jobconf”,“stream.recordreader.compression=gzip”, “-jobconf”,“mapred.output.compress=true”, “-jobconf”,“mapred.output.compression.type=block”, “-jobconf”、“mapred.output.compression.codec=org.apache.hadoop.io.compress.gzip代码”]

但是,映射器的输入仍然是解压缩的。我通过在映射器代码中向映射器打印输入来验证:

映射器输入:^^^^@%r?T^B???\K?6^r+F?3^D?B?r,??!???a?X?a?a?a?a?n?m?k?k?3id?o?z?z?a?X?a?B?a?a?a?a?a?o?o?o?o?n?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?a?B?a?a?a?a?a?a?a?a?a?B?a?a?B?a?B?B?a?a?B?B?B?B?B?B?B?B?B?B?B?B?B?B?B?B?B?B?B?B?B?B?B?B?B?B?B?B?B?B?B?B?B?B?B?B?B?B?B?B?B?B?B?B?B?B?B?B?B?B?B?B?B?B?是吗??? 任何关于如何快速解压的建议都将不胜感激

谢谢!
Gil.

您需要修改
LineRecordReader
类的源代码,以修改它选择压缩编解码器的方式。默认版本创建Hadoop
CompressionCodeFactory
并调用
getCodec
,该类解析扩展名的文件路径。您可以改为使用
GetCodeByClassName
来获取任何c你想要什么


然后,您需要重写输入格式类,使其使用新的记录读取器。详细信息如下:

您有没有发现这个问题?我对此也很感兴趣。。。