0. 说明

  SequenceFile 配置压缩编解码器 && 压缩类型的选型


1. SequenceFile 配置压缩编解码器

package hadoop.compression;

import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.io.IntWritable;
import org.apache.hadoop.io.SequenceFile;
import org.apache.hadoop.io.Text;
import org.apache.hadoop.io.compress.BZip2Codec;
import org.apache.hadoop.io.compress.CompressionCodec;
import org.apache.hadoop.io.compress.Lz4Codec;
import org.apache.hadoop.util.ReflectionUtils;
import org.junit.Test; /**
* SequenceFile 配置压缩编解码器
*/
public class TestSeqFileCompression {
/**
* 测试 SequenceFile 配置压缩编解码器进行压缩
*/
@Test
public void testWriteSeq() throws Exception { Configuration conf = new Configuration(); // 设置文件系统为本地模式
conf.set("fs.defaultFS", "file:///"); FileSystem fs = FileSystem.get(conf); // 通过反射获取 CompressionCodec 对象
// BZip2Codec.class / Lz4Codec.class
// BZip2Codec codec = ReflectionUtils.newInstance(BZip2Codec.class, conf);
Lz4Codec codec = ReflectionUtils.newInstance(Lz4Codec.class, conf); // Path path = new Path("E:/test/bz2.seq");
Path path = new Path("E:/test/lz4.seq"); // 块压缩
SequenceFile.Writer writer = SequenceFile.createWriter(fs, conf, path, IntWritable.class, Text.class, SequenceFile.CompressionType.BLOCK, codec); for (int i = 1; i <= 1000000; i++) {
IntWritable key = new IntWritable(i);
Text value = new Text("helloworld" + i); writer.append(key, value); } writer.close();
} }

2. 压缩类型的选型

  1. 使用 SequenceFile 等容器文件格式(SequenceFile | Avro 数据文件 | ORCFiles | Parquet 文件) + 快速压缩工具(LZO | LZ4 | Snappy)

  效率最高

  2. 使用支持切分的压缩格式(bzip2 | LZO),即支持逻辑切割的压缩格式
    LZO只有在添加索引的时候才支持切割,即 LZO 文件的预处理

package hadoop.compression;

import com.hadoop.compression.lzo.LzoIndexer;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path; /**
* LZO 文件的预处理,即在使用 LZO 文件之前添加索引
*/
public class TestLzoIndex {
public static void main(String[] args) throws Exception {
Configuration conf = new Configuration();
// 压缩编解码器必须是此类或其子类
conf.set("io.compression.codecs","com.hadoop.compression.lzo.LzopCodec");
LzoIndexer indexer = new LzoIndexer(conf);
indexer.index(new Path("file:///E:/test/codec/sdata.txt.lzo"));
}
}

  3. 将文本文件(待处理的文件)进行预切割,在每个文件段下进行压缩

  4. 存储未压缩的文件,效率最低


[SequenceFile_4] SequenceFile 配置压缩的更多相关文章

  1. Hadoop基础-Idea打包详解之手动添加依赖(SequenceFile的压缩编解码器案例)

    Hadoop基础-Idea打包详解之手动添加依赖(SequenceFile的压缩编解码器案例) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.编辑配置文件(pml.xml)(我 ...

  2. Hadoop基础-SequenceFile的压缩编解码器

    Hadoop基础-SequenceFile的压缩编解码器 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Hadoop压缩简介 1>.文件压缩的好处 第一:较少存储文件占用 ...

  3. Apache配置压缩优化时报错——undefined symbol: inflateEnd

    Apache配置压缩优化时报错——undefined symbol: inflateEnd 环境:CentOS 6.4 软件版本:httpd-2.4.6 apr-1.4.8 apr-util-1.5. ...

  4. Nginx 高级配置-压缩功能

    Nginx 高级配置-压缩功能 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Nginx压缩相关参数概述 1>.gzip on | off; Nginx支持对指定类型的文 ...

  5. Filter 起航 编程式配置 压缩响应 日志过滤器

    [编程式配置]可以用web.xml配置替换 @WebListenerpublic class FilterListenerConfigurator implements ServletContextL ...

  6. 【合集】Hadoop 合集

    0. 说明 Hadoop 随笔的目录 1. HDFS 主要内容: [HDFS_1] HDFS 的概念和特性 [HDFS_2] HDFS 的 Shell 操作 [HDFS_3] HDFS 工作机制 [H ...

  7. hadoop压缩配置

    为何要使用压缩,压缩可以是文件的大小减小很多,节省空间:另外压缩后的文件在传输时更节省带宽. 所需软件: 1)lzo 2)hadoop-lzo 3)maven 安装编译: 1)lzo wget htt ...

  8. hadoop基础-SequenceFile详解

    hadoop基础-SequenceFile详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.SequenceFile简介 1>.什么是SequenceFile 序列文件 ...

  9. Bandicam视频录制技巧总结+小丸工具箱压缩视频解决视频体积问题

    1.视频录制. 录制质量建议选择100,保证原文件的质量才能更好地保证渲染转码后输出视频的质量.音效这里就一个关键点,就是编码器默认的MPEG-1 L2,会导致会声会影渲染输出出错,程序强行关闭,Ve ...

随机推荐

  1. Tensorflow学习笔记(2):tf.nn.dropout 与 tf.layers.dropout

    A quick glance through tensorflow/python/layers/core.py and tensorflow/python/ops/nn_ops.pyreveals t ...

  2. apache log4j打印日志源码出口

    Throwable.class: public void printStackTrace(PrintStream s) { synchronized (s) { s.println(this); St ...

  3. Canvas画空心正五角星-扩展DEMO为五星红旗

    马上就要国庆了,在这个举国欢庆的日子里面,让我来画一个五角星表表我的爱国之情,啊?那你不是要画一个五星红旗?是的,你猜对了,其实我的最初想法只是画一个空心的正五角星,为了满足你,我拼一拼.在这个过程中 ...

  4. Scala构建工具SBT

    SBT(Simple Build Tool)是Scala的项目构建工具,拥有依赖管理,构建过程管理和打包等功能. SBT官网上给出各平台的安装方法: MAC: 使用homebrew安装 brew in ...

  5. Bootstrap-table 使用总结

    一.什么是Bootstrap-table? 在业务系统开发中,对表格记录的查询.分页.排序等处理是非常常见的,在Web开发中,可以采用很多功能强大的插件来满足要求,且能极大的提高开发效率,本随笔介绍这 ...

  6. 基于Zookeeper的分布式锁

    实现分布式锁目前有三种流行方案,分别为基于数据库.Redis.Zookeeper的方案,其中前两种方案网络上有很多资料可以参考,本文不做展开.我们来看下使用Zookeeper如何实现分布式锁. 什么是 ...

  7. Is the “*apply” family really not vectorized?

    Question: So we are used to say to every R new user that "apply isn't vectorized, check out the ...

  8. C#中的out、ref、params详解

    out参数: 如果你在一个方法中,返回多个相同类型的值的时候,可以考虑返回一个数组.但是,如果返回多个不同类型的值的时候,返回数组就不行了,那么这个时候,我们可以考虑使用out参数.out参数就侧重于 ...

  9. APP接口调用流程

  10. VUE页面刷新问题

    1). location方式 location.reload() 缺点:刷新页面,卡白 2). router方式 this.$router.go(0) 缺点:同一问题,比一好点 3). provide ...