关于工作中的一次读取lzo_deflate文件

关于lzo及.lzo_deflate文件读取写入

1.在MR Job中:

   如果输出格式是TextOutputFormat,要用LzopCodec,相应的读取这个输出的格式是LzoTextInputFormat。

   如果输出格式用SequenceFileOutputFormat,要用LzoCodec,相应的读取这个输出的格式是SequenceFileInputFormat。

//获取文件格式

  String inputfileformat = ConfigurationManager.getProperty("inputfileformat").trim();

  if(null!=inputfileformat && inputfileformat.equalsIgnoreCase("lzo")){

    //lzop(.lzo文件)输入

    //job.setInputFormatClass(LzoTextInputFormat.class);

   //lzo(.lzo_deflate)输入

   job.setInputFormatClass(SequenceFileInputFormat.class);

  }

   String outputfileformat = ConfigurationManager.getProperty("outputfileformat").trim();

  if(null!=outputfileformat && outputfileformat.equalsIgnoreCase("lzo")){

   FileOutputFormat.setCompressOutput(job, true);

    //lzop(.lzo文件)输出

   FileOutputFormat.setOutputCompressorClass(job, LzopCodec.class);

   //lzo(.lzo_deflate)输出

   FileOutputFormat.setOutputCompressorClass(job, LzoCodec.class);

  }

2.java读取.lzo_deflate文件(针对本地)

//进行keberos认证

 AuthKrb5.authKrb5();

 String inputPath = ConfigurationManager.getProperty("inputpath").trim();

 Path seqFile= new Path(inputPath);

 Configuration conf=new Configuration();

 /** hadoop集群任一节点拿配置文件到本地 */

 String coreSite = ConfigurationManager.getProperty("coreSite").trim();/// home/fate/FSDataAudit/auth/conf/core-site.xml

 log.info("coreSite:" + coreSite);

 /** hadoop集群任一节点拿配置文件到本地 */

 String hdfsSite = ConfigurationManager.getProperty("hdfsSite").trim();/// home/fate/FSDataAudit/auth/conf/hdfs-site.xml

 log.info("hdfsSite:" + hdfsSite);

 conf.addResource(coreSite);

 conf.addResource(hdfsSite);

 /*SequenceFile.Reader reader=null;

 reader=new SequenceFile.Reader(fs, path, con);*/

 

 SequenceFile.Reader reader = new SequenceFile.Reader(conf,SequenceFile.Reader.file(seqFile));  

 

 final LongWritable outputKey = new LongWritable();  

 final Text outputValue = new Text();

 // 将文件读出来,打印  

 while (reader.next(outputKey, outputValue)) {  

  System.out.println("outputKey: "+outputKey);  

  System.out.println("outputValue:"+outputValue);  

 }  

 

      /* while(reader.next(outputKey, outputValue)){

           final File file = new File("/usr/"+outputKey.toString());

           FileUtils.writeByteArrayToFile(file, outputValue.getBytes());

       }

       */

       reader.close();

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值