• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
导航菜单
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx
您的位置:首页 > 服务器 >云计算 > hadoop-common源码分析之-WritableUtils,hadoopcommon源码

hadoop-common源码分析之-WritableUtils,hadoopcommon源码

作者:网友 字体:[增加 减小] 来源:互联网

本文主要包含hadoop common,hadoop common 2.7.3,hadoop common 2.7.2,hadoop源码分析,hadoop源码等服务器相关知识,网友希望可以进行参考

hadoop-common源码分析之-WritableUtils,hadoopcommon源码


hadoop将java的基本类型进行封装,对整型进行编码时,分为固定长度格式、可变长度格式。可变长度格式使用一种比较灵活的编码方式,对与较小的数(尤其是负数)可以节省空间存储。

VIntWritable

public class VIntWritable implements WritableComparable<VIntWritable> {
  private int value;

//getter //setter
  @Override
  public void readFields(DataInput in) throws IOException {
    value = WritableUtils.readVInt(in);
  }

  @Override
  public void write(DataOutput out) throws IOException {
    WritableUtils.writeVInt(out, value);
  }

}

WritableUtils.writeVLong

  public static void writeVInt(DataOutput stream, int i) throws IOException {
    writeVLong(stream, i);
  }
  public static void writeVLong(DataOutput stream, long i) throws IOException {
    if (i >= -112 && i <= 127) {
      stream.writeByte((byte)i);
      return;
    }

    int len = -112;
    if (i < 0) {
      i ^= -1L; // take one's complement'
      len = -120;
    }

    long tmp = i;
    while (tmp != 0) {
      tmp = tmp >> 8;
      len--;
    }

    stream.writeByte((byte)len);

    len = (len < -120) ? -(len + 120) : -(len + 112);

    for (int idx = len; idx != 0; idx--) {
      int shiftbits = (idx - 1) * 8;
      long mask = 0xFFL << shiftbits;
      System.out.println(((i & mask) >> shiftbits));
      stream.writeByte((byte)((i & mask) >> shiftbits));
    }
  }

WritableUtils.readVLong

  public static long readVLong(DataInput stream) throws IOException {
    byte firstByte = stream.readByte();
    int len = decodeVIntSize(firstByte);
    if (len == 1) {
      return firstByte;
    }
    long i = 0;
    for (int idx = 0; idx < len-1; idx++) {
      byte b = stream.readByte();
      i = i << 8;
      i = i | (b & 0xFF);
    }
    return (isNegativeVInt(firstByte) ? (i ^ -1L) : i);
  }
  public static int decodeVIntSize(byte value) {
    if (value >= -112) {
      return 1;
    } else if (value < -120) {
      return -119 - value;
    }
    return -111 - value;
  } 
  public static boolean isNegativeVInt(byte value) {
    return value < -120 || (value >= -112 && value < 0);
  }

总结:

版权声明:本文为博主原创文章,未经博主允许不得转载。

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • hadoop-common源码分析之-WritableUtils,hadoopcommon源码

相关文章

  • MapReduce处理数据平均值与数值大小排行比较,mapreduce平均值
  • 高阶MapReduce_3_reducer侧联结原理,mapreduce原理
  • Hadoop之——HBase笔记,hadoophbase
  • hadoop distcp使用,hadoopdistcp
  • 基于Hive及Sqoop的每日PV、UV、IP定时分析,hivesqoop
  • hadoop-common源码分析之-WritableUtils,hadoopcommon源码
  • 通过 JMX 获取Hadoop/HBase监控数据,jmxhadoop
  • 大数据分析与应用的8个场景
  • Docker 中文文档目录,docker文档目录
  • spark资料下载,spark下载

文章分类

  • windows
  • 服务器硬件
  • 服务器运维
  • 云计算
  • 虚拟化
  • IIS教程
  • Linux
  • Apache
  • Ftp
  • DNS
  • Nginx

最近更新的内容

    • mysql数据导入hbase
    • 数据预处理-PDB文件,数据预处理-pdb
    • openstack--计算节点安装(Node),openstack--node
    • Hadoop新版和旧版中InputSplit大小的区别,hadoopinputsplit
    • Hive学习笔记(三),hive学习笔记
    • Sqoop工具,sqoop安装
    • 关于HIVE数据仓库的基本操作,hive数据仓库
    • Storm计算结果是如何存放的,Storm计算结果存放
    • spark core源码分析16 Shuffle详解-读流程,sparkshuffle
    • libvirt网络过滤规则:禁止客户机(bridge方式)连接外网,libvirtbridge

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有