hadoop2.2编程:序列化
测试序列化后的长度
提示:需要用到的类,以及继承关系如下:
1.java.lang.Object
|__ java.io.OutputStream
|__ java.io.ByteArrayOutputStream
//description
public class ByteArrayOutputStream
extends OutputStream
//method
byte[] toByteArray() //Creates a newly allocated byte array.
2.java.lang.Object
|__ java.io.OutputStream
|__ java.io.FilterOutputStream
|__ java.io.DataOutputStream
//description
public class DataOutputStream
extends FilterOutputStream
implements DataOutput
3. java.lang.Object
|__ java.io.OutputStream
// description
public abstract class OutputStream
extends Object
implements Closeable, Flushable
//mdthods
void close()
void flush()
void write(byte[] b)
void write(byte[] b, int off, int len)
abstract void write(int b)
4.org.apache.hadoop.io
Interface Writable
//description
public interface Writable
//methods
void readFields(DataInput in)
void write(DataOutput out)
5. java.lang.Object
|__ org.apache.hadoop.io.IntWritable
//description
public class IntWritableextends Object
implements WritableComparable
// methods
int get()
void readFields(DataInput in)
void set(int value)
void write(DataOutput out)
6. java.lang.Object
|__ org.apache.hadoop.util.StringUtils
//description
public class StringUtils
extends Object
//method
static String byteToHexString(byte[] bytes)
static String capitalize(String s)
static String[] split(String str)
static Path[] stringToPath(String[] str)
static URI[] stringToURI(String[] str)
static String uriToString(URI[] uris)
代码:
import java.io.DataOutputStream;
import java.io.ByteArrayOutputStream;
import java.lang.Byte;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.IOUtils;
import org.apache.hadoop.util.StringUtils;
public class TestWritable extends IntWritable {
public static byte[] serialize(IntWritable writable) throws Exception {
ByteArrayOutputStream out = new ByteArrayOutputStream();
DataOutputStream dataOut = new DataOutputStream(out);
writable.write(dataOut);
dataOut.close();
return out.toByteArray();
}
public static void main(String[] args) throws Exception {
IntWritable i = new IntWritable();
i.set(8);
System.out.println(i.get());
byte[] bytes = serialize(i);
System.out.println(bytes.toString().length());
System.out.println(StringUtils.byteToHexString(bytes));
}
}
hadoop2.2编程:序列化的更多相关文章
- hadoop2.2编程: 重写comparactor
要点: 类型比较在hadoop的mapreduce中非常重要,主要用来比较keys; hadoop中的RawComparator<T>接口继承自java的comparator, 主要用来比 ...
- hadoop2.2编程:使用MapReduce编程实例(转)
原文链接:http://www.cnblogs.com/xia520pi/archive/2012/06/04/2534533.html 从网上搜到的一篇hadoop的编程实例,对于初学者真是帮助太大 ...
- hadoop2.2编程:各种API
hadoop2.2 API http://hadoop.apache.org/docs/r0.23.9/api/index.html junit API http://junit.org/javado ...
- hadoop2.2编程:DFS API 操作
1. Reading data from a hadoop URL 说明:想要让java从hadoop的dfs里读取数据,则java 必须能够识别hadoop hdfs URL schema, 因此我 ...
- hadoop2.2编程:mapreduce编程之二次排序
mr自带的例子中的源码SecondarySort,我重新写了一下,基本没变. 这个例子中定义的map和reduce如下,关键是它对输入输出类型的定义:(java泛型编程) public static ...
- c#基础语言编程-序列化
引言 程序员在编写应用程序的时候往往要将程序的某些数据存储在内存中,然后将其写入某个文件或是将它传输到网络中的另一台计算机上以实现通讯.这个将程序数据转化成能被存储并传输的格式的过程被称为" ...
- ASP.NET Web API编程——序列化与内容协商
1 多媒体格式化器 多媒体类型又叫MIME类型,指示了数据的格式.在HTTP协议中多媒体类型描述了消息体的格式.一个多媒体类型包括两个字符串:类型和子类型. 例如: text/html.image/p ...
- Python高级编程-序列化
在程序运行的过程中,所有的变量都是在内存中,比如,定义一个dict: dict1 = {'name': 'Rob', 'age': 19, 'score': 90} 可以随时修改变量,比如把age改成 ...
- python IO编程-序列化
原文链接:https://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000/00143192607 ...
随机推荐
- 解决Android Studio启动速度慢的问题。避免每次启动Android Studio都要fetching Android sdk compoment information。
Android Studio每次启动都要去fetching sdk,由于Android sdk 官网在大陆连不上,所以每次启动时界面都会停在那里很久. 解决办法就是设置取消每次fetching sdk ...
- DBCP的配置参数
tomcatde DHCP的配置 <Resource driverClassName="com.microsoft.sqlserver.jdbc.SQLServerDriver&quo ...
- swift-闭包和类的声明
//闭包:类似Oc中的block 反向传值引起代码的回调 func hasClosureMathes(arr : [Int],value:Int,cb:(num:Int,value : Int)-&g ...
- [转]CSS 模块
CSS 模块 如果你想知道 CSS 最近发展的转折点,你应该选择去观看 Christopher Chedeau 在2014年11月的 NationJS 大会上做的名称为 CSS in JS 的分享.不 ...
- ubuntu mint 15 编译安装PHP开发环境
php 5.3.5(download zip) httpd 2.2.24(download zip) mysql: apt-get install mysql step 1: install mysq ...
- linux指令大全(完整篇)(转)
http://blog.chinaunix.net/uid-9681606-id-1998590.html linux指令大全(完整篇)(转) 2009-03-17 01:21:46 分类: ...
- bm25
BM25算法,通常用来作搜索相关性平分.一句话概况其主要思想:对Query进行语素解析,生成语素qi:然后,对于每个搜索结果D,计算每个语素qi与D的相关性得分,最后,将qi相对于D的相关性得分进行加 ...
- PHP curl 采集内容之规则 及图片下载方法2
<?phpheader("Content-type:text/html; charset=utf-8");/*$pattern = '/xxx(.*)yyyy/isU'; / ...
- C#中判断bool 类型 代码的最短写法
看到一个关于写最短代码的, 是一个bool类型判断的: public bool IsNull(object val) { if (val == null) { return true; } e ...
- iOS Xcode制作模板类-b
为什么要定义模板类 遵守代码规范可以提高代码可读性, 降低后期维护成本. 当我们定下了一个团队都认同的代码规范, 如我们要求所有的viewController的代码都得按照下面来组织: #pragma ...