hadoop 学习笔记 四 -----hadoop I/O

1.LocalFileSystem 执行客户端的校验和验证

public static void main(String[] args) throws Exception {
		String uri = args[0];
		Configuration conf = new Configuration();
		// 执行客户端的校验和验证,系统在么一个需操作的文件目录新建一个.filename.crc的隐藏文件,
		//大小由io.bytes.per.checksum控制
		FileSystem fs = new LocalFileSystem();
		fs.initialize(URI.create(uri), conf);
}



2.RawLocalFileSystem 禁用校验的计算

	public static void main(String[] args) throws Exception {
		String uri = args[0];
		Configuration conf = new Configuration();
		FileSystem fs = new RawLocalFileSystem();
		fs.initialize(URI.create(uri), conf);
	}

3.压缩


创建一个file.gz的压缩文件:gzip -p file



4.CompressionCodec 对数据流进行压缩和解压缩

	public static void main(String[] args) throws Exception {//
		Configuration conf = new Configuration();
		CompressionCodec codec = (CompressionCodec) ReflectionUtils.newInstance(FileSystemCat.class, conf);
		CompressionOutputStream out = codec.createOutputStream(System.out);
		IOUtils.copyBytes(System.in, out, 4096, false);
	}


5.CompressionCodecFactory得到CompressionCodec
        public static void main(String[] args) throws Exception {
		String uri = args[0];
		Configuration conf = new Configuration();
		FileSystem fs = FileSystem.get(URI.create(uri), conf);
		CompressionCodecFactory factory = new CompressionCodecFactory(conf);
		CompressionCodec codec = factory.getCodec(new Path(uri));
		//...
	}


6.批量解压和压缩,使用codepool压缩池

public static void main(String[] args) throws Exception {
		String uri = args[0];
		Configuration conf = new Configuration();
		FileSystem fs = FileSystem.get(URI.create(uri), conf);
		CompressionCodecFactory factory = new CompressionCodecFactory(conf);
		CompressionCodec codec = factory.getCodec(new Path(uri));
		Compressor compressor = CodecPool.getCompressor(codec);
		CompressionOutputStream out =codec.createOutputStream(System.out, compressor);
		IOUtils.copyBytes(System.in, out, 4096, false);
		out.flush();
		
		CodecPool.returnCompressor(compressor);//不同的数据流之间可以来回复制数据,
}



7.MapReduce作业输出进行压缩配置:mapred.output.compress设置为true,mapred.output.compression.codec属性设置为打算使用压缩的codec的类名

mapred.output.compression.type设置压缩格式,默认为RECORD:针对每条记录进行压缩,BLOCK:针对一组进行压缩(推荐)


8.


9.序列化:将结构化对象转化为字节流,可以实现网络传输和磁盘写入永久保存;反序列化:将字节流转回结构化对象。hadoop上体现:进程通信和永久存储

10.RPC:远程过程调用。


11.writable 接口:是hadoop的核心,大多数MapReduce程序都会为键值使用它。

11.1 定义两个方法:write(DataOutput out) 和 readFields(DataInput in) 

11.2IntWritable 对象 set()设置值,deserialize()从刚写的输出数据中读取数据,get() 获取数值

11.3 WritableComparable 和 comparator  

11.4 


12.Text类型:Text是针对utf-8序列的Writable类


13. BytesWritable 对二进制数据数组的封装。它序列化格式为一个用于指定后面数据字节数的整数域(4个字节),后跟字节本身。


14. NullWritable 是Writable的一个特殊的类,序列化长度为0,可以充当占位符。


15.ObjectWritable 和 GenericWritable 


16.Writable集合类:ArrayWritable,TwoDArrayWritable,MapWritable,SortMapWritable。


17.序列化框架:Serialization ,io.serizalization属性设置为一个由句点分隔的类名列表,默认值为WritableSerizlization。


18.序列化:IDL(接口定义语言)


19.avro 是一个独立于编程语言的数据序列化系统。


20.SequenceFile 小文件容器。


21.MapFile 是已经排序的SequenceFile,加入了搜索键的索引。












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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值