一.使用Parquet存储数据
数据使用列存储之前是普通的行存储,下面是行存储的的文件大小,这个HDFS上的数据


使用parquet列存储,可以将文件的大小减小化。下面具体讲parquet存储数据的代码以及加载数据的格式。
数据库代码:

create table if not exists db_yhd.track_log_parquet(
id              STRING,
url             STRING,
referer         STRING,
keyword         STRING,
type            STRING,
guid            STRING,
pageId          STRING,
moduleId        STRING,
linkId          STRING,
attachedInfo    STRING,
sessionId       STRING,
trackerU        STRING,
trackerType     STRING,
ip              STRING,
trackerSrc      STRING,
cookie          STRING,
orderCode       STRING,
trackTime       STRING,
endUserId       STRING,
firstLink       STRING,
sessionViewNo   STRING,
productId       STRING,
curMerchantId   STRING,
provinceId      STRING,
cityId          STRING,
fee             STRING,
edmActivity     STRING,
edmEmail        STRING,
edmJobId        STRING,
ieVersion       STRING,
platform        STRING,
internalKeyword STRING,
resultSum       STRING,
currentPage     STRING,
linkPosition    STRING,
buttonPosition  STRING
)
PARTITIONED BY(date_str String,hour_str STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY "\t"
STORED AS Parquet

加载数据

INSERT OVERWRITE TABLE db_yhd.track_log_parquet PARTITION (date_str="20150828",hour_str="18") IF NOT EXISTS
SELECT id,url,referer,keyword,type,guid,pageId,moduleId,linkId,attachedInfo,sessionId,trackerU,trackerType,ip,trackerSrc,cookie,orderCode,trackTime,endUserId,firstLink,sessionViewNo ,productId,curMerchantId ,provinceId,cityId,fee,edmActivity,edmEmail,edmJobId,ieVersion,platform,internalKeyword,resultSum,currentPage,linkPosition,buttonPosition
FROM
db_yhd.track_log
WHERE
date_str="20150828" and hour_str="18"

测试结果截图:

二.使用Parquet格式+snappy压缩
也可以使用parquet格式+snappy压缩格式实现文件的压缩,减少数据的大小,增加数据的加载速度。
压缩代码:

set parquet.compression=snappy;
create table if not exists db_yhd.track_log_parquet_snappy(
id              STRING,
url             STRING,
referer         STRING,
keyword         STRING,
type            STRING,
guid            STRING,
pageId          STRING,
moduleId        STRING,
linkId          STRING,
attachedInfo    STRING,
sessionId       STRING,
trackerU        STRING,
trackerType     STRING,
ip              STRING,
trackerSrc      STRING,
cookie          STRING,
orderCode       STRING,
trackTime       STRING,
endUserId       STRING,
firstLink       STRING,
sessionViewNo   STRING,
productId       STRING,
curMerchantId   STRING,
provinceId      STRING,
cityId          STRING,
fee             STRING,
edmActivity     STRING,
edmEmail        STRING,
edmJobId        STRING,
ieVersion       STRING,
platform        STRING,
internalKeyword STRING,
resultSum       STRING,
currentPage     STRING,
linkPosition    STRING,
buttonPosition  STRING
)
PARTITIONED BY(date_str String,hour_str STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY "\t"
STORED AS Parquet

加载数据

INSERT OVERWRITE TABLE db_yhd.track_log_parquet_snappy PARTITION (date_str="20150828", hour_str="18" ) IF NOT EXISTS SELECT id,url,referer,keyword,type,guid,pageId,moduleId,linkId,attachedInfo,sessionId,trackerU,trackerType,ip,trackerSrc,cookie,orderCode,trackTime,endUserId,firstLink,sessionViewNo ,productId,curMerchantId ,provinceId,cityId,fee,edmActivity,edmEmail,edmJobId,ieVersion,platform,internalKeyword,resultSum,currentPage,linkPosition,buttonPosition
FROMdb_yhd.track_log
WHEREdate_str="20150828" and  hour_str="18"

测试结果截图:

三.使用ORC格式存储 + snappy压缩
可以使用orc文本格式+snappy压缩格式下面是它的具体实现方法:
SQL语句:

 create table if not exists db_yhd.track_log_orc_snappy(
id              STRING  ,
url             STRING,
referer         STRING,
keyword         STRING,
type            STRING,
guid            STRING,
pageId          STRING,
moduleId        STRING,
linkId          STRING,
attachedInfo    STRING,
sessionId       STRING,
trackerU        STRING,
trackerType     STRING,
ip              STRING,
trackerSrc      STRING,
cookie          STRING,
orderCode       STRING,
trackTime       STRING,
endUserId       STRING,
firstLink       STRING,
sessionViewNo   STRING,
productId       STRING,
curMerchantId   STRING,
provinceId      STRING,
cityId          STRING,
fee             STRING,
edmActivity     STRING,
edmEmail        STRING,
edmJobId        STRING,
ieVersion       STRING,
platform        STRING,
internalKeyword STRING,
resultSum       STRING,
currentPage     STRING,
linkPosition    STRING,
buttonPosition  STRING
)
PARTITIONED BY(date_str String,hour_str STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY "\t"
STORED AS ORC
TBLPROPERTIES ("orc.compress"="SNAPPY")

加载数据:

INSERT OVERWRITE TABLE db_yhd.track_log_orc_snappy PARTITION (date_str="20150828", hour_str="18" ) IF NOT EXISTS
SELECT id,url,referer,keyword,type,guid,pageId,moduleId,linkId,attachedInfo,sessionId,trackerU,trackerType,ip,trackerSrc,cookie,orderCode,trackTime,endUserId,firstLink,sessionViewNo ,productId,curMerchantId ,provinceId,cityId,fee,edmActivity,edmEmail,edmJobId,ieVersion,platform,internalKeyword,resultSum,currentPage,linkPosition,buttonPosition
FROMdb_yhd.track_log
WHEREdate_str="20150828" and  hour_str="18"

测试结果截图:

4.总结
以上这三种方式虽然对数据进行了大幅度的压缩,但是还是没有改变元数据的分割性,原来的值没有改变。虽然文件的大小压缩越小越好,但是,在压缩中不能改变数据的分割性以及原文件的数据内容需保持不变。以上是比较常见的组合压缩方式。

HIVE Parquet格式+snappy压缩及ORC格式+snappy压缩文件的方式相关推荐

  1. 【hive】hive常见的几种文件存储格式与压缩方式的结合-------Parquet格式+snappy压缩 以及ORC格式+snappy压缩文件的方式

    一.使用Parquet存储数据 数据使用列存储之前是普通的行存储,下面是行存储的的文件大小,这个HDFS上的数据 使用parquet列存储,可以将文件的大小减小化.下面具体讲parquet存储数据的代 ...

  2. 浅谈HIVE数据存储格式使用STORED AS ORC 格式

     1.在压缩存储时间上,除Sequencefile外基本都相差无几.  2.数据压缩比例上ORC最优,相比textfile节省了50倍磁盘空间,parquet压缩性能也较好.  3.SQL查询速 ...

  3. 我们hive库建表默认是orc格式的,建表必须加 as textfile,否则外部文本数据导不进去,这坑趟过两遍了,妈蛋!

    hive -e "create table <database_name>.<table_name>(f1 string) stored as textfile;&q ...

  4. linux怎么看文件是否orc格式,hive文件存储格式orc,parquet,avro对比

    orc文件存储格式 ORC文件也是以二进制方式列式存储的,所以是不可以直接读取,ORC文件也是自解析的,它包含许多的元数据,这些元数据都是同构ProtoBuffer进行序列化的.文件结构如下 ORC文 ...

  5. date类型_06076.1.0如何将ORC格式且使用了DATE类型的Hive表转为Parquet表

    温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图. Fayson的github: https://github.com/fayson/cdhproject 提示 ...

  6. hdfs orc格式_HIVE存储格式ORC、PARQUET对比

    hive有三种默认的存储格式,TEXT.ORC.PARQUET.TEXT是默认的格式,ORC.PARQUET是列存储格式,占用空间和查询效率是不同的,专门测试过后记录一下. 一:建表语句差别 crea ...

  7. Hive中text格式和orc格式表的索引性能相关总结

    Hive中text格式和orc格式表的索引性能相关总结 text表索引的使用: 建表: create table aa (O_ORDERKEY int, O_CUSTKEY int, O_ORDER ...

  8. Hive表 Parquet压缩 , Gzip,Snappy,uncompressed 效果对比

    创建两张表,通过一种是parquet , 一种使用parquet snappy压缩 创建表 使用snappy CREATE EXTERNAL TABLE IF NOT EXISTS tableName ...

  9. MapReduce 读取ORC格式文件

    1.创建orc格式hive表: create table test_orc(name string,age int) stored as orc 2.查看表结构: show create table ...

最新文章

  1. C# 与 Unity 同名函数
  2. 网络规划设计(项目类业务)
  3. 工作110:表格重置
  4. MRP的数据处理-华北水利水电大学(作业)
  5. c/c++多线程模拟系统资源分配(并通过银行家算法避免死锁产生)
  6. nutch,hbase,zookeeper兼容性问题
  7. 【实习】【算法】百度面经之四
  8. 出发啦,不要问那路在哪
  9. BZOJ 1565: [NOI2009]植物大战僵尸
  10. 如何将qlv格式视频转换成MP4?这款功能极强的视频格式转换工具不要错过
  11. python回车和换行的区别_换行\ n与回车\ r的区别
  12. jQuery easyui treegrid无法传参到后台bugger一记
  13. 观察者模式实际应用场景「扩展点实战系列」- 第439篇
  14. 【UI界面设计】PS基础学习笔记
  15. 原奶周期与伊利、蒙牛的兼并战争
  16. QT UI界面组件介绍
  17. 系统服务器设置有错误,Win7系统ie浏览器提示域名解析错误如何解决
  18. 使用组件不渲染 Unknown custom element: <xxx> - did you register the component correctly? For recursiv
  19. 原生JavaScript实现对象的完全深度拷贝
  20. 国务院办公厅关于2014年部分节假日安排的通知

热门文章

  1. linux安装git安装
  2. 修复lsp,360浏览器可以上网其它软件不行
  3. TinyMce 修改插件 实现多文件/图片上传
  4. Java XStream理解
  5. unity本地分数排行榜简单解决方案(Json)
  6. Chaquopy中不能导入64位Python训练的机器学习模型(32bit与64bit不兼容)
  7. DuerOS业绩亮眼,如何成为了百度财报新增长点?
  8. idea右键项目找不到show dependencies
  9. 物联网概论(IoT)_Chp7 物联网数据与计算/Google大数据/云计算
  10. nodejs express搭建服务器(爬虫知乎精华帖,个人学习用)六 html