(转)Hadoop数据类型

来源: http://www.cnblogs.com/anny-1980/articles/2608097.html

  • BooleanWritable:标准布尔型数值
  • ByteWritable:单字节数值
  • DoubleWritable:双字节数值
  • FloatWritable:浮点数
  • IntWritable:整型数
  • LongWritable:长整型数
  • Text:使用UTF8格式存储的文本
  • NullWritable:当<key, value>中的key或value为空时使用

二. 用户自定义数据类型的实现

1.继承接口Writable,实现其方法write()和readFields(), 以便该数据能被序列化后完成网络传输或文件输入/输出;

2.如果该数据需要作为主键key使用,或需要比较数值大小时,则需要实现WritalbeComparable接口,实现其方法write(),readFields(),CompareTo() 。

public class Point3D implements Writable<Point3D>

{

private float x,y,z;

public float getX(){return x;}

public float getY(){return y;}

public float getZ(){return z;}

public void readFields(DataInput in) throws IOException

{

x = in.readFloat();

y = in.readFloat();

z = in.readFloat();

}

public void write(DataOutput out) throws IOException

{

out.writeFloat(x);

out.writeFloat(y);

out.writeFloat(z);

}

}

public class Point3D implements WritableComparable<Point3D>

{

private float x,y,z;

public float getX(){return x;}

public float getY(){return y;}

public float getZ(){return z;}

public void readFields(DataInput in) throws IOException

{

x = in.readFloat();

y = in.readFloat();

z = in.readFloat();

}

public void write(DataOutput out) throws IOException

{

out.writeFloat(x);

out.writeFloat(y);

out.writeFloat(z);

}

public int CompareTo(Point3D p)

{

//具体实现比较当前的空间坐标点this(x,y,z)与指定的点p(x,y,z)的大小

// 并输出: -1(小于), 0(等于), 1(大于)

}

}

时间: 2024-10-12 13:32:06

(转)Hadoop数据类型的相关文章

Hadoop 数据类型

一.  Hadoop内置的数据类型 BooleanWritable:标准布尔型数值 ByteWritable:单字节数值 DoubleWritable:双字节数值 FloatWritable:浮点数 IntWritable:整型数 LongWritable:长整型数 Text:使用UTF8格式存储的文本 NullWritable:当<key, value>中的key或value为空时使用 二. 用户自定义数据类型的实现 1.继承接口Writable,实现其方法write()和readField

结合手机上网流量业务来说明Hadoop中的自定义数据类型(序列化、反序列化机制)

大家都知道,Hadoop中为Key的数据类型必须实现WritableComparable接口,而Value的数据类型只需要实现Writable接口即可:能做Key的一定可以做Value,能做Value的未必能做Key.但是具体应该怎么应用呢?--本篇文章将结合手机上网流量业务进行分析. 先介绍一下业务场景:统计每个用户的上行流量和,下行流量和,以及总流量和. 本次描述所用数据: 日志格式描述: 日志flowdata.txt中的具体数据: 接下来贴出详细代码,代码中含有详细注释,从代码中可以看出,

Hadoop自定义类型处理手机上网日志

job提交源码分析 在eclipse中的写的代码如何提交作业到JobTracker中的哪?(1)在eclipse中调用的job.waitForCompletion(true)实际上执行如下方法 connect(); info = jobClient.submitJobInternal(conf); (2)在connect()方法中,实际上创建了一个JobClient对象. 在调用该对象的构造方法时,获得了JobTracker的客户端代理对象JobSubmissionProtocol. JobSu

Hadoop学习笔记—5.自定义类型处理手机上网日志

一.测试数据:手机上网日志 1.1 关于这个日志 假设我们如下一个日志文件,这个文件的内容是来自某个电信运营商的手机上网日志,文件的内容已经经过了优化,格式比较规整,便于学习研究. 该文件的内容如下(这里我只截取了三行): 1363157993044 18211575961 94-71-AC-CD-E6-18:CMCC-EASY 120.196.100.99 iface.qiyi.com 视频网站 15 12 1527 2106 200 1363157995033 15920133257 5C-

Hadoop那些事儿(三)---MapReduce编程浅析

1.map和reduce 1.1 mapReduce处理逻辑 在本系列文章的第一篇中,曾对MapReduce原理做过简单的描述,在这里再重述一遍. 首先我们有两个文件word1.txt和word2.txt 其中word1.txt的内容如下: aaaa bbbb cccc dddd aaaa word2.txt的内容如下: aaaa cccc dddd eeee aaaa 这里的两个文件很小,我们先假设这两个文件很大,分别为64M和96M的大小,然后我们需要统计文件中每个字符串的数量,那么MapR

Hadoop之——Partitioner编程

转载请注明出处:http://blog.csdn.net/l1028386804/article/details/46136685 一.Mapper类的实现 static class MyMapper extends Mapper<LongWritable, Text, Text, KpiWritable>{ protected void map(LongWritable key, Text value, org.apache.hadoop.mapreduce.Mapper<LongWr

Hadoop实战读书笔记(6)

putmerge程序的大体流程是? 1.根据用户定义的参数设置本地目录和HDFS的目录文件 2.提取本地输入目录中每个文件的信息 3.创建一个输出流写入到HDF文件 4.遍历本地目录中的每个文件,打开一个输入流来读取该文件,剩下就是一个标准的Java文件复制过程了 具体程序如下: public static void main(String[] args) throws IOException { Configuration conf = new Configuration(); FileSys

Hadoop系列(七)Hadoop三大核心之MapReduce-程序编写

目录 1. 准备部分 2. jar包依赖 3. Map部分 4.Reduce部分 5.提交部分 6.打包提交 接下来以一个简单的WordCount为例子,介绍Java版本的MapReduce的程序编写. mapreduce程序主要分三部分:1.map部分,2.reduce部分,3.提交部分. 1. 准备部分 hadoop中,针对数据类型自成一体,与java的数据类型对应.封装在hadoop.io包中,主要分为基本类型和其它类型. 基本数据类型 数据类型 hadoop数据类型 Java数据类型 布

Hadoop学习之MapReduce

结构介绍 MapReduce是Hadoop提供的一种处理海量数据的并行编程模型和计算框架,用于对大规模的数据进行并行计算.主要由ResourceManager和NodeManager两类节点构成. ResourceManager主要负责集群资源管理,NodeManager负责节点的资源管理. 当运行MapReduce任务的时候,后产生ApplicationMaster和Container,其中ApplicationMaster负责向ResourceManager节点进行资源的申请并控制任务的执行