​编辑

Hive文件存储格式及优缺点

textfile

默认的文件格式,行存储。建表时不指定存储格式即为textfile,导入数据时把数据文件拷贝至hdfs不进行处理。

优点:最简单的数据格式,便于和其他工具(pig, grep, sed, awk)共享数据、便于查看和编辑;加载较快。

缺点:耗费存储空间,I/O性能较低;Hive不进行数据切分合并,不能进行并行操作,查询效率低。

适用于小型查询,查看具体数据内容的测试操作。

sequencefile

行存储,含有键值对的二进制文件。

优点:可压缩、可分割,优化磁盘利用率和I/O;可并行操作数据,查询效率高。

缺点:存储空间消耗最大;对于Hadoop生态系统之外的工具不适用,需要通过text文件转化加载。

rcfile

行列式存储。先将数据按行分块,同一个record在一个块上,避免读一条记录需要读多个block;然后块数据列式存储。

优点:可压缩,高效的列存取;查询效率较高。

缺点:加载时性能消耗较大,需要通过text文件转化加载;读取全量数据性能低。

orcfile

​编辑

优化后的rcfile,行列式存储。优缺点与rcfile类似,查询效率最高。适用于Hive中大型的存储、查询。

parquet

​编辑

列式存储,以二进制方式存储。

优点:可压缩,高效的列存取;优化I/O。

缺点:不支持upadate操作(数据写入后不可更改),不支持ACID。

Hive压缩算法对比

Hive压缩算法包含6种,其中包含default、gzip、bzip2、lzo、lz4、snappy等压缩格式,具体采用压缩算法及比对详细如下:

编辑

检查Hadoop本地库支持压缩格式

检查命令:hadoop checknative

hadoop checknative 命令检查本地库是否支持压缩,若不支持,需要进行源码编译将native library编译进Hadoop。

native library checking:

hadoop:  true /opt/cloudera/parcels/cdh-6.1.0-1.cdh6.1.0.p0.770702/lib/hadoop/lib/native/libhadoop.so.1.0.0

zlib:     true /lib64/libz.so.1

zstd:     true /opt/cloudera/parcels/cdh-6.1.0-1.cdh6.1.0.p0.770702/lib/hadoop/lib/native/libzstd.so.1

snappy:  true /opt/cloudera/parcels/cdh-6.1.0-1.cdh6.1.0.p0.770702/lib/hadoop/lib/native/libsnappy.so.1

lz4:     true revision:10301

bzip2:   true /lib64/libbz2.so.1

openssl:  true /lib64/libcrypto.so

isa-l:   true /opt/cloudera/parcels/cdh-6.1.0-1.cdh6.1.0.p0.770702/lib/hadoop/lib/native/libisal.so.2

Hive压缩算法设置

default压缩格式

​编辑

set hive.exec.compress.output=true;

set mapred.output.compress=true;

set mapred.output.compression.codec=org.apache.hadoop.io.compress.defaultcodec;

gzip压缩格式

​编辑

set hive.exec.compress.output=true;

set mapred.output.compress=true;

set mapred.output.compression.codec=org.apache.hadoop.io.compress.gzipcodec;

bzip2压缩格式

​编辑

set hive.exec.compress.output=true;

set mapred.output.compress=true;

set mapred.output.compression.codec=org.apache.hadoop.io.compress.bzip2codec;

lzo压缩格式

​编辑

set hive.exec.compress.output=true;

set mapred.output.compress=true;

set mapred.output.compression.codec=com.hadoop.compression.lzo.lzopcodec;

lz4压缩格式

​编辑

set hive.exec.compress.output=true;

set mapred.output.compress=true;

set mapred.output.compression.codec= org.apache.hadoop.io.compress.lz4pcodec;

snappy压缩格式

​编辑

set hive.exec.compress.output=true;

set mapred.compress.map.output=true;

set mapred.output.compress=true;

set mapred.output.compression=org.apache.hadoop.io.compress.snappycodec;

set mapred.output.compression.codec=org.apache.hadoop.io.compress.snappycodec;

set io.compression.codecs=org.apache.hadoop.io.compress.snappycodec;

压缩算法测试及结果比对

测试案例

​编辑

测试一个Hive在不同的压缩格式下进行对压缩比、查询效率、插入效率进行结果比对。

测试环境

​编辑

大数据平台产品:CDH6.1

节点个数:2+6

内存:256G

CPU:64核

测试数据

​编辑

表名称:ods.o_cor_test

源文件大小:3.8G

查询速度:19.41S

建表语句:

CREATE TABLE ODS.O_COR_TEST

(  BOOK_ID                 STRING,

EVENT_ID                 STRING,

TRX_ID_IN                STRING,

TRX_ID_OUT               STRING,

LINE_ID                  STRING,

HEADER_ID                STRING,

BATCH_ID                 STRING,

BOOK_TYPE                STRING,

ASSET_TYPE               STRING,

CATEGORY_ID              STRING,

INTERFACE_CONTROL_ID_IN  STRING,

INTERFACE_CONTROL_ID_OUT STRING,

EFFECTIVE_DATE           DATE,

INEFFECTIVE_DATE         DATE,

DATA_DATE                DATE,

ACCOUNTING_DATE          DATE,

EVENT_TYPE               STRING,

ACTIVE_CODE              STRING,

AMORTIZED_COST           STRING,

FAIR_COST                STRING,

CONTACT_IN               STRING,

CONTACT_OUT              STRING,

COST                     STRING,

INT                      STRING,

INT_ADJUST               STRING,

EVALUATION_ADJUST        STRING,

FAIR_COST_ADJUST         STRING,

CV_RESERVE               STRING,

RV_RESERVE               STRING,

HV_RESERVE               STRING,

RA_COST                  STRING,

LEASE_COST               STRING,

LEASE_CV_RESERVE         STRING,

LEASE_RV_RESERVE         STRING,

LEASE_HV_RESERVE         STRING,

INVESTMENT_INCOME        STRING,

INVESTMENT_LOSS          STRING,

FAIR_COST_GAIN_LOSS      STRING,

V_LOSS                   STRING,

OTHER_INCOME             STRING,

ORIGINAL                 STRING,

TRANS_INT_IN             STRING,

TRANS_INT_OUT            STRING,

INT_ACCRUED              STRING,

EXPENSE                  STRING,

RECOV_ORIGINAL           STRING,

RECOV_TRANS_INT_IN       STRING,

RECOV_TRANS_INT_OUT      STRING,

RECOV_INT_ACCRUED        STRING,

RECOV_EXPENSE            STRING,

LOSS_ORIGINAL            STRING,

LOSS_TRANS_INT_IN        STRING,

LOSS_TRANS_INT_OUT       STRING,

LOSS_INT_ACCRUED         STRING,

LOSS_EXPENSE             STRING,

LEASE_ORIGINAL           STRING,

GUARANTEE1               STRING,

GUARANTEE2               STRING,

GUARANTEE3               STRING,

BALANCE_OUT              STRING,

LY_INVESTMENT_INCOME     STRING,

LY_INVESTMENT_LOSS       STRING,

LY_FAIR_COST_GAIN_LOSS   STRING,

LY_V_LOSS                STRING,

LAST_UPDATE_DATE         DATE,

LAST_UPDATED_BY          STRING,

CREATION_DATE            DATE,

CREATED_BY               STRING,

LAST_UPDATE_LOGIN        STRING,

ATTRIBUTE_CATEGORY       STRING,

ATTRIBUTE1               STRING,

ATTRIBUTE2               STRING,

ATTRIBUTE3               STRING,

ATTRIBUTE4               STRING,

ATTRIBUTE5               STRING,

ATTRIBUTE6               STRING,

ATTRIBUTE7               STRING,

ATTRIBUTE8               STRING,

ATTRIBUTE9               STRING,

ATTRIBUTE10              STRING,

INT_AMORTIZED            STRING,

START_DATE               DATE,

END_DATE                 DATE,

DEL_FLAG                 STRING

)

测试方法

本测试采用每次开启Hive压缩模式并设置Hive的压缩算法,对于Hive每种文件存储格式新建Hive表,并向不同分区插入数据,测试并记录各种压缩算法的压缩效率、查询速率、插入速度。

注:每次设置终端退出后设置无效。

查询速率测试sql语句:

select count(*) from ods.o_cor_test where etl_date=

压缩算法对比

编辑

编辑

编辑

编辑

测试结果

当应用场景多为查询时,建议使用orcfile存储格式且压缩格式为default。

当应用场景多为存储时,建议使用orcfile存储格式且压缩格式为bzip2。

当应用场景多为插入时,建议使用sequencefile存储格式且压缩格式为snappy。

一般常用存储格式为orcfile且压缩格式为default。

实用干货分享(5)- Hive存储格式及压缩算法测试比对分析的更多相关文章

  1. 逆向实用干货分享,Hook技术第一讲,之Hook Windows API

    逆向实用干货分享,Hook技术第一讲,之Hook Windows API 作者:IBinary出处:http://www.cnblogs.com/iBinary/版权所有,欢迎保留原文链接进行转载:) ...

  2. 逆向实用干货分享,Hook技术第二讲,之虚表HOOK

    逆向实用干货分享,Hook技术第二讲,之虚表HOOK 正好昨天讲到认识C++中虚表指针,以及虚表位置在反汇编中的表达方式,这里就说一下我们的新技术,虚表HOOK 昨天的博客链接: http://www ...

  3. 【腾讯优测干货分享】Android内存泄漏的简单检查与分析方法

    本文来自于Dev Club 开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57d14047603a5bf1242ad01b 导语 内存泄漏问题大约是An ...

  4. 【腾讯优测干货分享】安卓专项测试之GPU测试探索

    本文来自于Dev Club 开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/57c7ffdc0569a1191bce8a63 作者:章未哲——腾讯SNG质 ...

  5. 【干货分享】Google 的设计准则,素材和资源

    在谷歌,他们说, “专注于用户,所有其它的就会水到渠成 ”.他们遵循设计原则,寻求建立让用户惊喜的用户体验.谷歌一直挑战自己,为他们的用户创造一种视觉语言,综合优秀设计的经典原则和创新.谷歌设计规范是 ...

  6. APP运营干货分享

    从移动互联网市场总监岗位出发,从几个方面来阐述移动互联网部门如何制定一份运营推广策划案,至于关于移动互联网,移动电商是大趋势这些虚的.空泛的文字,不展开说了. 一.竞品分析 1.选择竞品,做好定位(选 ...

  7. Hive存储格式之RCFile详解,RCFile的过去现在和未来

    我在整理Hive的存储格式和压缩格式,本来打算一篇发出来,结果其中一小节就有很多内容,于是打算写成Hive存储格式和压缩格式系列. 本节主要讲一下Hive存储格式最早的典型的列式存储格式RCFile. ...

  8. Hive存储格式之ORC File详解,什么是ORC File

    目录 概述 文件存储结构 Stripe Index Data Row Data Stripe Footer 两个补充名词 Row Group Stream File Footer 条纹信息 列统计 元 ...

  9. 干货分享:SQLSERVER使用裸设备

    干货分享:SQLSERVER使用裸设备 这篇文章也适合ORACLE DBA和MYSQL DBA 阅读 裸设备适用于Linux和Windows 在ORACLE和MYSQL里也是支持裸设备的!! 介绍 大 ...

  10. iOS - GitHub干货分享(APP引导页的高度集成 - DHGuidePageHUD - ②)

    距上一篇博客"APP引导页的高度集成 - DHGuidePageHUD - ①"的发布有一段时间了, 后来又在SDK中补充了一些新的内容进去但是一直没来得及跟大家分享, 今天来跟大 ...

随机推荐

  1. Java反射取值赋值

    项目需求:需要对获取的数据每个字段值校验合法性,故想到用 反射 实现 /** * 字段值校验 * * @param r 需要校验的实体类 * @param properties 自定义需要校验的属性 ...

  2. 从SQL Server过渡到PostgreSQL:理解模式的差异

    从SQL Server过渡到PostgreSQL:理解模式的差异 前言 随着越来越多的企业转向开源技术,商业数据库管理员和开发者也逐渐面临向PostgreSQL迁移的需求. 虽然SQL Server和 ...

  3. ARM SMMU的原理与IOMMU

    首先放一个社区iommupatch的网址:https://lore.kernel.org/linux-iommu/ 1: arm smmu的原理 1.1: smmu 基本知识 如上图所示,smmu 的 ...

  4. webpack与grunt、gulp的不同

    首先,它们的共同点三者都是前端构建工具,grunt和gulp早期比较流行,现在 webpack 是主流: 区别:grunt 和 gulp 基于 任务和流 : webpack 基于入口文件,webpac ...

  5. kotlin更多语言结构——>操作符重载

    Kotlin允许我们为自己的类型提供预定义的一组操作符的实现.这些操作符具有固定的符号表示(如 + 或 *) 和固定的优先级.为实现这样的操作符,我们为相应的类型(即二元操作符左侧的类型和一元操作符的 ...

  6. 记录一次edu的小通杀

    记录一次edu的小通杀 fofa查询随便点的一个虚拟仿真实训系统,存在多处未授权.逻辑漏洞,并且存在文件上传漏洞导致getshell,检索下来差不多十几个学校在用 从虚拟仿真系统入手感觉容易一些,一个 ...

  7. K8s GPU 资源管理探索:在 KubeSphere 上部署 AI 大模型 Ollama

    作者:运维有术星主 随着人工智能.机器学习.AI 大模型技术的迅猛发展,我们对计算资源的需求也在不断攀升.特别是对于需要处理大规模数据和复杂算法的 AI 大模型,GPU 资源的使用变得至关重要.对于运 ...

  8. KubeSphere 3.1.0 GA:混合多云走向边缘,让应用无处不在

    2021 年 4 月 29 日,KubeSphere 开源社区激动地向大家宣布,KubeSphere 3.1.0 正式发布!为了帮助企业最大化资源利用效率,KubeSphere 打造了一个以 Kube ...

  9. T3 出行云原生容器化平台实践

    公司简介 T3 出行是南京领行科技股份有限公司打造的智慧出行生态平台,由中国第一汽车集团有限公司.东风汽车集团有限公司.重庆长安汽车股份有限公司发起,联合腾讯.阿里巴巴等互联网企业共同投资打造.公司以 ...

  10. AOT漫谈专题(第六篇): C# AOT 的泛型,序列化,反射问题

    一:背景 1. 讲故事 在 .NET AOT 编程中,难免会在 泛型,序列化,以及反射的问题上纠结和反复纠错尝试,这篇我们就来好好聊一聊相关的处理方案. 二:常见问题解决 1. 泛型问题 研究过泛型的 ...