关于hive当中表的存储和压缩方式总结

这几天研究hive表的存储方式和压缩模式。在这里做一个简单的总结

hive表的存储

样例 : 我的表:rp_person_house_loan_info

数据总量:1933776

textfile

(1)hive数据表的默认格式,存储方式:行存储 。

(2) 可使用Gzip,Bzip2等压缩算法压缩,压缩后的文件不支持split

上面的数据存储格式为textfile,文件没有压缩总的文件大小为160.1M。

SequenceFile

(1)Hadoop API提供的一种二进制文件,以<key,value>的形式序列化到文件中。存储方式:行存储。

(2)支持三种压缩选择:NONE,RECORD,BLOCK。Record压缩率低,一般建议使用BLOCK压缩。

(3)优势是文件和hadoop api中的MapFile是相互兼容的

上面数据的存储模式为sequencefile,总的文件大小为186.86M

RCFile

(1)存储方式:数据按行分块,每块按列存储。结合了行存储和列存储的优点:

(2)首先,RCFile 保证同一行的数据位于同一节点,因此元组重构的开销很低
(3)其次,像列存储一样,RCFile 能够利用列维度的数据压缩,并且能跳过不必要的列读取

上面数据的存储模式为RCFile,总的文件大小为134.17M

ORCFile

  • 存储方式:数据按行分块 每块按照列存储
  • 压缩快 快速列存取
  • 效率比rcfile高,是rcfile的改良版本

上面数据的存储模式为orc模式,同时启动了snappy的压缩模式,总的文件大小为34.48M 下面是orc 的snappy压缩的表结构:

总结:

我们再建设数据仓库的时候,通常都是一次写入,多次读取
存储文件的大小的关系:
SequenceFile > TextFile > RCfile

TextFile 默认格式,加载速度最快,可以采用Gzip、bzip2等进行压缩,压缩后的文件无法split,即并行处理
SequenceFile 压缩率最低,查询速度一般,三种压缩格式NONE,RECORD,BLOCK
RCfile 压缩率最高,查询速度最快,数据加载最慢。
orc (snappy压缩模式) 查询速度更快

所以在数据仓库的建设过程当中尽量的使用orc的这种模式再加上压缩模式。一方面减少磁盘的使用量,一方面可以实现数据的split(分布式计算),实现查询速度加快。

建立orc的snappy压缩模式的建表语句如下:

CREATE TABLE IF NOT EXISTS rp_person_house_loan_info
    (
    loan_no varchar(20),
    if_me varchar(5)

    )
 ROW FORMAT DELIMITED
 FIELDS TERMINATED BY ‘\t‘
 STORED AS orc tblproperties ("orc.compress"="SNAPPY");

对于其他的模式启动压缩的方式:

在插入之前对表的压缩模式进行设定set hive.exec.compress.output=true;
set mapred.output.compress=true;
set mapred.output.compression.codec=org.apache.hadoop.io.compress.GzipCodec;
set io.compression.codecs=org.apache.hadoop.io.compress.GzipCodec; 

原文地址:https://www.cnblogs.com/gxgd/p/10522112.html

时间: 2024-10-17 07:41:58

关于hive当中表的存储和压缩方式总结的相关文章

大数据--hive分桶查询&amp;&amp;压缩方式

一.分桶及抽样查询 1.分桶表创建 --------------------------------------- hive (db_test)> create table stu_buck(id int,name string) > clustered by(id) > into 4 buckets > row format delimited fields terminated by '\t';OKTime taken: 0.369 seconds --------------

Android数据存储五种方式总结

本文介绍Android平台进行数据存储的五大方式,分别如下: 1 使用SharedPreferences存储数据     2 文件存储数据       3 SQLite数据库存储数据 4 使用ContentProvider存储数据 5 网络存储数据 下面详细讲解这五种方式的特点 第一种: 使用SharedPreferences存储数据     适用范围:保存少量的数据,且这些数据的格式非常简单:字符串型.基本类型的值.比如应用程序的各种配置信息(如是否打开音效.是否使用震动效果.小游戏的玩家积分

使用Snappy 压缩方式报错“java.lang.UnsatisfiedLinkError: no snappyjava in java.library.path”

情况描述 其实这个问题已经困扰我很久了,最近在公司Linux上搭建hadoop 和 spark环境的时候,我就遇到 spark提交作业到yarn 集群就报错这个错,当时已经安装snappy环境了,任何关于snappy静态库都编译了,这是我提交到spark mail list上的http://apache-spark-user-list.1001560.n3.nabble.com/java-lang-UnsatisfiedLinkError-no-snappyjava-in-java-librar

Impala实践之十二:impala压缩方式测试

前言 测一下parquet.snappy.gzip.textfile这些方式在hdfs中占用的存储大小. 在impala中直接建内部表. 测试 存储格式 压缩格式 文件大小 建表时间 textfile none 3.0 G 38.74s parquet none 1.5 G 32.33s parquet snappy 709.3 M 31.71s parquet gzip 471.5 M 48.23s snappy snappy的官方描述. Snappy is a compression/dec

最笨的方法解决 使用Snappy 压缩方式报错“java.lang.UnsatisfiedLinkError: no snappyjava in java.library.path”

之前写过一篇这个文章:http://blog.csdn.net/stark_summer/article/details/47361603,那个时候 linux环境 spark 使用snappy方式压缩任然不好用,而今天我同事hive on hadoop 使用snappy压缩方式也报这个错,此刻的我,感觉这个问题 一定要解决 我想了想,只能使用最笨的方式先解决这个问题了,将libsnappyjava.so文件放到$JAVA_HOME/jre/lib/amd64/下了 操作过程如下: 首先把$HA

(转载)Android数据存储三种方式总结

本文转载自:http://www.cnblogs.com/ITtangtang/p/3920916.html 本文介绍Android平台进行数据存储的三大方式,分别如下: 1 使用SharedPreferences存储数据 2 文件存储数据 3 SQLite数据库存储数据 其他: 4 使用ContentProvider存储数据 5 网络存储数据 下面详细讲解这五种方式的特点 第一种: 使用SharedPreferences存储数据     适用范围:保存少量的数据,且这些数据的格式非常简单:字符

Bitmap有效的压缩方式

在Android开发中我们都会遇到在一个100*100的ImageView上显示一张过大的图片,如果直接把这张图片显示上去对我们应用没有一点好处反而存在OOM的危险,所以我们有必要采用一种有效压缩方式来显示上去. private void calculateBitmapInSimpleSize() { Bitmap _bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.bg_homepage); getBitmapDa

iOS边练边学--应用数据存储的常用方式(plist,Preference,NSKeyedArchiver)其中的三种

iOS应用数据存储的常用方式: XML属性列表(plist)归档 Preference(偏好设置) NSKeyedArchiver归档(NSCoding) SQLite3--这里暂且不讲 Core Data--这里暂且不讲 一.应用沙盒 每个iOS应用都有自己的应用沙盒(应用沙盒就是文件系统目录),与其他文件系统隔离.应用必须待在自己的沙盒里,其他应用不能访问该沙盒 应用沙盒的文件系统目录,如下图所示 二.应用沙盒结构分析 应用程序包:(上图中的Layer)包含了所有的资源文件和可执行文件 Do

Android数据存储技术五大方式总结

本文介绍Android平台进行数据存储的五大方式,分别如下: 1 使用SharedPreferences存储数据 2 文件存储数据 3 SQLite数据库存储数据 4 使用ContentProvider存储数据 5 网络存储数据 下面详细讲解这五种方式的特点 第一种: 使用SharedPreferences存储数据     适用范围:保存少量的数据,且这些数据的格式非常简单:字符串型.基本类型的值.比如应用程序的各种配置信息(如是否打开音效.是否使用震动效果.小游戏的玩家积分等),解锁口令密码等