hadoop学习4——使用hadoop压缩(zipping)文件

hadoop0.20.2

1.使用streaming命令(摘至hadoop开发文档):

Java代码   收藏代码
  1. 除了纯文本格式的输出,你还可以生成gzip文件格式的输出,你只需设置streaming作业中的选项‘-jobconf mapred.output.compress=true -jobconf mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCode’。  

 

2.使用程序:

输入文件:

Java代码   收藏代码
  1. $ bin/hadoop fs -ls /temp/in  
  2. Found 2 items  
  3. -rw-r--r--   1 Administrator supergroup         52 2012-02-09 10:02 /temp/in/t1.txt  
  4. -rw-r--r--   1 Administrator supergroup         35 2012-02-09 10:02 /temp/in/t2.txt  

  调试代码:

Java代码   收藏代码
  1. public class ZipFile {  
  2.       
  3.     public static class Map extends MapReduceBase implements Mapper<LongWritable, Text, Text, IntWritable> {  
  4.         private final static IntWritable one = new IntWritable(1);  
  5.         private Text word = new Text();  
  6.   
  7.         public void map(LongWritable key, Text value,  
  8.                 OutputCollector<Text, IntWritable> output, Reporter reporter)  
  9.                 throws IOException {  
  10.               
  11.             output.collect((Text)value, null);  
  12.   
  13.         }  
  14.     }  
  15.   
  16.     public static void main(String[] args) {  
  17.         JobClient client = new JobClient();  
  18.         JobConf conf = new JobConf(com.hadoop.test.ZipFile.class);  
  19.   
  20.         // TODO: specify output types  
  21. //      conf.setOutputKeyClass(Text.class);  
  22. //      conf.setOutputValueClass(IntWritable.class);  
  23.   
  24.         // TODO: specify input and output DIRECTORIES (not files)  
  25.         FileInputFormat.setInputPaths(conf, new Path("/temp/in"));  
  26.         FileOutputFormat.setOutputPath(conf, new Path("/temp/out-" + System.currentTimeMillis()));  
  27.   
  28.         // TODO: specify a mapper  
  29.         conf.setMapperClass(Map.class);  
  30.   
  31.         // TODO: specify a reducer  
  32. //      conf.setReducerClass(org.apache.hadoop.mapred.lib.IdentityReducer.class);  
  33.           
  34.         FileOutputFormat.setCompressOutput(conf, true);  
  35.         FileOutputFormat.setOutputCompressorClass(conf, org.apache.hadoop.io.compress.GzipCodec.class);  
  36. //        conf.setOutputFormat(NonSplitableTextInputFormat.class);  
  37. //        conf.setInputFormat(TextInputFormat.class);  
  38. //      conf.setOutputFormat(TextOutputFormat.class);  
  39.           
  40.         conf.setNumReduceTasks(0);  
  41.   
  42.              
  43.         client.setConf(conf);  
  44.         try {  
  45.             JobClient.runJob(conf);  
  46.         } catch (Exception e) {  
  47.             e.printStackTrace();  
  48.         }  
  49.     }  
  50.   
  51. }  

 

输出文件:

Java代码   收藏代码
  1. $ bin/hadoop fs -ls /temp/out-1328857284203  
  2. Found 2 items  
  3. -rw-r--r--   3 Administrator supergroup         67 2012-02-10 15:01 /temp/out-1328857284203/part-00000.gz  
  4. -rw-r--r--   3 Administrator supergroup         53 2012-02-10 15:01 /temp/out-1328857284203/part-00001.gz  

 

使用命令:

$ bin/hadoop fs -get /temp/out-1328857284203/part-00000.gz out1.gz

把压缩后的文件下载到本地也是zip格式的文件,打开,解压打开跟原文件一致。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值