hive基础知识五

本文对比了Hive中TextFile、Parquet、ORC三种存储格式的压缩比和查询速度,发现ORC在压缩比和查询速度上表现最优。同时,文章详细介绍了ORC支持的压缩类型,并通过实测证明ZLIB压缩后的文件体积小于Snappy压缩。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Hive 主流文件存储格式对比

1、存储文件的压缩比测试

1.1 测试数据
https://github.com/liufengji/Compression_Format_Data
​
log.txt 大小为18.1 M
1.2 TextFile
  • 创建表,存储数据格式为TextFile

create table log_text (
track_time string,
url string,
session_id string,
referer string,
ip string,
end_user_id string,
city_id string
)
row format delimited fields terminated by '\t'
stored as textfile ;
  • 向表中加载数据

load data local inpath '/home/hadoop/log.txt' into table log_text ;
  • 查看表的数据量大小

dfs -du -h /user/hive/warehouse/log_text;
​
+------------------------------------------------+--+
|                   DFS Output                   |
+------------------------------------------------+--+
| 18.1 M  /user/hive/warehouse/log_text/log.txt  |
+------------------------------------------------+--+
1.3 Parquet
  • 创建表,存储数据格式为 parquet

create table log_parquet  (
track_time string,
url string,
session_id string,
referer string,
ip string,
end_user_id string,
city_id string
)
row format delimited fields terminated by '\t'
stored as parquet;
  • 向表中加载数据

insert into table log_parquet select * from log_text;
  • 查看表的数据量大小

dfs -du -h /user/hive/warehouse/log_parquet;
​
+----------------------------------------------------+--+
|                     DFS Output                     |
+----------------------------------------------------+--+
| 13.1 M  /user/hive/warehouse/log_parquet/000000_0  |
+----------------------------------------------------+--+
1.4 ORC
  • 创建表,存储数据格式为ORC

create table log_orc  (
track_time string,
url string,
session_id string,
referer string,
ip string,
end_user_id string,
city_id string
)
row format delimited fields terminated by '\t'
stored as orc  ;
  • 向表中加载数据

insert into table log_orc select * from log_text ;
  • 查看表的数据量大小

dfs -du -h /user/hive/warehouse/log_orc;
+-----------------------------------------------+--+
|                  DFS Output                   |
+-----------------------------------------------+--+
| 2.8 M  /user/hive/warehouse/log_orc/000000_0  |
+-----------------------------------------------+--+
1.5 存储文件的压缩比总结
ORC >  Parquet >  textFile

2、存储文件的查询速度测试

2.1 TextFile
select count(*) from log_text;
+---------+--+
|   _c0   |
+---------+--+
| 100000  |
+---------+--+
1 row selected (16.99 seconds)
2.2 Parquet
select count(*) from log_parquet;
+---------+--+
|   _c0   |
+---------+--+
| 100000  |
+---------+--+
1 row selected (17.994 seconds)
2.3 ORC
select count(*) from log_orc;
+---------+--+
|   _c0   |
+---------+--+
| 100000  |
+---------+--+
1 row selected (15.943 seconds)
2.4 存储文件的查询速度总结
ORC > TextFile > Parquet

3、存储和压缩结合

3.1 创建一个非压缩的的ORC存储方式表
  • 1、创建一个非压缩的的ORC表

create table log_orc_none (
track_time string,
url string,
session_id string,
referer string,
ip string,
end_user_id string,
city_id string
)
row format delimited fields terminated by '\t'
stored as orc tblproperties("orc.compress"="NONE") ;
  • 2、加载数据

insert into table log_orc_none select * from log_text ;
  • 3、查看表的数据量大小

dfs -du -h /user/hive/warehouse/log_orc_none;
+----------------------------------------------------+--+
|                     DFS Output                     |
+----------------------------------------------------+--+
| 7.7 M  /user/hive/warehouse/log_orc_none/000000_0  |
+----------------------------------------------------+--+
3.2 创建一个snappy压缩的ORC存储方式表
  • 1、创建一个snappy压缩的的ORC表

create table log_orc_snappy (
track_time string,
url string,
session_id string,
referer string,
ip string,
end_user_id string,
city_id string
)
row format delimited fields terminated by '\t'
stored as orc tblproperties("orc.compress"="SNAPPY") ;
  • 2、加载数据

insert into table log_orc_snappy select * from log_text ;
  • 3、查看表的数据量大小

dfs -du -h /user/hive/warehouse/log_orc_snappy;
+------------------------------------------------------+--+
|                      DFS Output                      |
+------------------------------------------------------+--+
| 3.8 M  /user/hive/warehouse/log_orc_snappy/000000_0  |
+------------------------------------------------------+--+
3.3 创建一个ZLIB压缩的ORC存储方式表
  • 不指定压缩格式的就是默认的采用ZLIB压缩

    • 可以参考上面创建的 log_orc 表

  • 查看表的数据量大小

dfs -du -h /user/hive/warehouse/log_orc;
+-----------------------------------------------+--+
|                  DFS Output                   |
+-----------------------------------------------+--+
| 2.8 M  /user/hive/warehouse/log_orc/000000_0  |
+-----------------------------------------------+--+
3.4 存储方式和压缩总结
  • orc 默认的压缩方式ZLIB比Snappy压缩的还小。

  • 在实际的项目开发当中,hive表的数据存储方式一般选择:orc或parquet

  • 由于snappy的压缩和解压缩 效率都比较高,压缩方式一般选择snappy

转载于:https://www.cnblogs.com/lojun/p/11396793.html

### Hive 基础教程入门指南 #### 什么是 Apache Hive? Apache Hive 是一种数据仓库工具,专为查询和管理存储在分布式系统中的大型结构化数据集而设计。Hive 提供了一种类似于 SQL 的查询语言——HiveQL (HQL),使得熟悉关系数据库管理系统(RDBMS)的人可以轻松过渡到大数据处理环境[^1]。 #### Hive 在 Hadoop 生态系统中的位置 作为 Hadoop 平台的一部分,Hive 构建于 HDFS 和 MapReduce 上面。它允许用户通过简单的声明式命令来读取、写入以及管理和分析位于 HDFS 中的数据。此外,随着 Spark 成为了更受欢迎的选择之一,Hive 还支持使用 Spark 作为其执行引擎来进行更快捷的任务处理[^2]。 #### 安装配置 Hive 要安装并运行 Hive,请先确保已经正确设置了 Java 环境变量,并完成了 Hadoop 集群的搭建工作。接着下载最新版本的 Hive 发行包解压至指定目录下,在 `hive-env.sh` 文件里设置好相应的路径参数指向本地已有的 Hadoop 实例地址即可完成基本初始化操作。 对于文件分发情况可以通过如下方式验证: ```bash cat /opt/module/hadoop-3.1.3/etc/hadoop/core-site.xml ``` #### 使用 Hive 创建表与加载数据 创建新表格时可以选择内部表或外部表两种模式;前者会把原始输入源移动到默认库的位置,后者则保持原样不变仅建立索引关联。下面是一个简单例子展示如何向名为 'teacher' 的表上传文本文件: ```bash $hadoop fs -put teacher.txt /user/hive/warehouse/teacher ``` 此命令将会把本地磁盘上的 `teacher.txt` 文件复制到 HDFS 对应路径下的教师表中。 #### 查询优化技巧 当面对海量级规模的数据量时,合理的分区策略能够显著提高性能表现。比如按照日期字段进行划分可以让每次扫描只涉及特定时间段内的记录而不是整个历史积累下来的全部内容。另外就是压缩编码技术的应用同样有助于减少 I/O 开销从而加快响应速度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值