hadoop SequenceFile

SequenceFile是Hadoop为MapReduce设计的二进制文件格式,适合存储包括二进制数据的日志记录。在写入时,需要注意file option与stream option不能同时指定。SequenceFile由头信息和多个记录组成,头信息包含版本号、类信息和压缩配置。记录可能采用record或block压缩,block压缩能提高效率,且默认块大小与HDFS相同。读取时,如果已启用压缩,代码只需在write阶段添加相应配置,read阶段保持不变。
摘要由CSDN通过智能技术生成

SequenceFile是专为mapreduce设计的,是可分割的二进制格式,以key/value对的形式存储。在存储日志文件时,每一行文本代表一条日志记录。纯文本不合适记录二进制类型的数据。SequenceFile可以作为小文件的容器。

write

先看下 在hadoop中如何写SequenceFile。

 private static final String[] DATA = {
            "One, two, buckle my shoe",
            "Three, four, shut the door",
            "Five, six, pick up sticks",
            "Seven, eight, lay them straight",
            "Nine, ten, a big fat hen"
    };

    public static void main(String[] args) throws IOException {

        Configuration configuration = new Configuration();

        configuration.set("fs.defaultFS", "hdfs://hadoop:9000");

        FileSystem fs = FileSystem.get(configuration);

        Path path = new Path("hdfs://hadoop:9000/hadoop/seq/numbers.seq");

        IntWritable key = new IntWritable();
        Text value = new Text();

        SequenceFile.Writer.Option valueOption = SequenceFile.Writer.valueClass(value.getClass());
        SequenceFile.Writer.Option keyOption = SequenceFile.Writer.keyClass(key.getClass());
        SequenceFile.Writer.Option file = SequenceFile.Writer.file(path);
        //指定了 file optiona 就不需要指定 stream
      //  SequenceFile.Writer.Option stream = SequenceFil
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值