java sequencefile_自定义数据类型写入SequenceFile并读出

开头对这边博客的内容做个概述,首先是定义了一个DoubleArrayWritable的类,用于存放矩阵的列向量,然后将其作为value写入SequenceFile中,key就是对应的矩阵的列号,最后(key,value)从SequenceFile中读出,与另一矩阵做乘法。完全通过IDEA在本地调试程序,并未提交集群。一般来说是将hadoop-core-1.2.1.jar和lib目录下的commons-cli-1.2.jar两个包加入到工程的classpath中就可以了,不过仅仅添加这两个包,调试的时候会提示找不到某些类的定义,所以索性将hadoop-core-1.2.1.jar和lib目录下的所有jar包均添加到工程的classpath中,这样完全不必提交到集群就可以在本地调试程序。

1)首先是定义DoubleArrayWritable类,这个类继承与ArrayWritable。

1 importorg.apache.hadoop.io.IntWritable;2 importorg.apache.hadoop.io.ArrayWritable;3 public class IntArrayWritable extendsArrayWritable {4 publicIntArrayWritable(){5 super(IntWritable.class);6 }7 }

因为要读取SequenceFile中的(key,value)传给map,所以需要以4-6的形式显示定义构造函数。

2)然后是将DoubleArrayWritable类型的对象作为value写入SequenceFile,使用SequenceFile.writer

/*** Created with IntelliJ IDEA.

* User: hadoop

* Date: 16-3-4

* Time: 上午10:36

* To change this template use File | Settings | File Templates.*/

importorg.apache.hadoop.conf.Configuration;importorg.apache.hadoop.fs.FileSystem;importorg.apache.hadoop.fs.Path;importjava.io.IOException;importjava.net.URI;importorg.apache.hadoop.io.IntWritable;importorg.apache.hadoop.io.SequenceFile;importorg.apache.hadoop.io.ArrayWritable;public classSequenceFileWriterDemo {public static void main(String[] args) throwsIOException {

String uri="/home/hadoop/2016Test/SeqTest/10IntAr

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值