Hive中的数据压缩

Posted 数据咖啡

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hive中的数据压缩相关的知识,希望对你有一定的参考价值。

1.数据文件存储格式

下面简介一下hive 支持的存储格式

 
   
   
 
  1. file_format:

  2.    : SEQUENCEFILE

  3.    | TEXTFILE        -- (Default, depending on hive.default.fileformat configuration)

  4.    | RCFILE          -- (Note: Available in Hive 0.6.0 and later)

  5.    | ORC             -- (Note: Available in Hive 0.11.0 and later)

  6.    | PARQUET         -- (Note: Available in Hive 0.13.0 and later)

  7.    | AVRO            -- (Note: Available in Hive 0.14.0 and later)

  8.    | INPUTFORMAT     input_format_classname OUTPUTFORMAT output_format_classname

数据存储格式分为按行存储数据和按列存储数据。 (1)ORCFile(Optimized Row Columnar File):hive/shark/spark支持。使用ORCFile格式存储列数较多的表。 (2)Parquet(twitter+cloudera开源,被Hive、Spark、Drill、Impala、Pig等支持)。Parquet比较复杂,其灵感主要来自于dremel,parquet存储结构的主要亮点是支持嵌套数据结构以及高效且种类丰富算法(以应对不同值分布特征的压缩)。(1)存储为TEXTFILE格式

 
   
   
 
  1. create table page_views(

  2. track_time string,

  3. url string,

  4. session_id string,

  5. referer string,

  6. ip string,

  7. end_user_id string,

  8. city_id string

  9. )

  10. ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'

  11. STORED AS TEXTFILE ;

  12. load data local inpath '/opt/datas/page_views.data' into table page_views ;

  13. dfs -du -h /user/hive/warehouse/page_views/ ;

  14. 18.1 M  /user/hive/warehouse/page_views/page_views.data

(2)存储为ORC格式

 
   
   
 
  1. create table page_views_orc(

  2. track_time string,

  3. url string,

  4. session_id string,

  5. referer string,

  6. ip string,

  7. end_user_id string,

  8. city_id string

  9. )

  10. ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'

  11. STORED AS orc ;

  12. insert into table page_views_orc select * from page_views ;

  13. dfs -du -h /user/hive/warehouse/page_views_orc/ ;

  14. 2.6 M  /user/hive/warehouse/page_views_orc/000000_0

(3)存储为Parquet格式

 
   
   
 
  1. create table page_views_parquet(

  2. track_time string,

  3. url string,

  4. session_id string,

  5. referer string,

  6. ip string,

  7. end_user_id string,

  8. city_id string

  9. )

  10. ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'

  11. STORED AS PARQUET ;

  12. insert into table page_views_parquet select * from page_views ;

  13. dfs -du -h /user/hive/warehouse/page_views_parquet/ ;

  14. 13.1 M  /user/hive/warehouse/page_views_parquet/000000_0

(4)存储为ORC格式,使用snappy压缩

 
   
   
 
  1. create table page_views_orc_snappy(

  2. track_time string,

  3. url string,

  4. session_id string,

  5. referer string,

  6. ip string,

  7. end_user_id string,

  8. city_id string

  9. )

  10. ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'

  11. STORED AS orc tblproperties ("orc.compress"="SNAPPY");

  12. insert into table page_views_orc_snappy select * from page_views ;

  13. dfs -du -h /user/hive/warehouse/page_views_orc_snappy/ ;

  14. 3.8 M  /user/hive/warehouse/page_views_orc_snappy/000000_0

这里为什么会大了呢 因为默认使用Gzip压缩的

(5)存储为ORC格式,不使用压缩

 
   
   
 
  1. create table page_views_orc_none(

  2. track_time string,

  3. url string,

  4. session_id string,

  5. referer string,

  6. ip string,

  7. end_user_id string,

  8. city_id string

  9. )

  10. ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'

  11. STORED AS orc tblproperties ("orc.compress"="NONE");

  12. insert into table page_views_orc_none select * from page_views ;

  13. dfs -du -h /user/hive/warehouse/page_views_orc_none/ ;

  14. 7.6 M  /user/hive/warehouse/page_views_orc_none/000000_0

(6)存储为Parquet格式,使用snappy压缩

 
   
   
 
  1. set parquet.compression=SNAPPY ;

  2. create table page_views_parquet_snappy(

  3. track_time string,

  4. url string,

  5. session_id string,

  6. referer string,

  7. ip string,

  8. end_user_id string,

  9. city_id string

  10. )

  11. ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'

  12. STORED AS parquet;

  13. insert into table page_views_parquet_snappy select * from page_views ;

  14. dfs -du -h /user/hive/warehouse/page_views_parquet_snappy/ ;

  15. 2.7 M  /user/hive/warehouse/page_views_parquet_snappy/000000_0

在实际的项目开发当中,hive表的数据的存储格式一般使用orcfile / parquet,数据压缩一般使用snappy压缩格式。 转载自 https://blog.csdn.net/gongxifacai_believe/article/details/80833480

欢迎关注,更多福利


以上是关于Hive中的数据压缩的主要内容,如果未能解决你的问题,请参考以下文章

一文彻底搞懂Hive的数据存储与压缩

Hive支持的文件格式和压缩格式及各自特点

2021年大数据Hive:Hive的数据压缩

Hive文件存储格式和hive数据压缩

Hadoop基础(五十):压缩和存储

大数据技术之_08_Hive学习_04_压缩和存储(Hive高级)+ 企业级调优(Hive优化)