Hive文件存储格式

Hive文件存储格式

文件格式

在HIVE中,常见的文件存储格式有

  • TextFile
  • Parquet
  • ORC
  • Sequence
  • RC
  • AVRO

建表语句

这里我们根据不同的文件格式,新建测试表。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
--textfile文件格式
CREATE TABLE `test_textfile`(`id` STRING,`desc` STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS textfile;
--parquet文件格式
CREATE TABLE `test_parquet`(`id` STRING,`desc` STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS parquet;
--orc文件格式
CREATE TABLE `test_orc`(`id` STRING,`desc` STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS orc;
--sequence文件格式
CREATE TABLE `test_sequence`(`id` STRING,`desc` STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS sequence;
--rc文件格式
CREATE TABLE `test_rc`(`id` STRING,`desc` STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS rc;
--avro文件格式
CREATE TABLE `test_avro`(`id` STRING,`desc` STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY ',' STORED AS avro;

区别

我们从同一个源表新增数据到这六张测试表,为了体现存储数据的差异性,我们选取了一张数据量比较大的源表(源表数据量为30000000条)。
下面从存储空间和SQL查询两个方面进行比较。
其中SQL查询为包含group by的计量统计和不含group by的计量统计。

1
2
sql01:select count(*) from test_table;
sql02:select id,count(*) from test_table group by id;

相关的查询结果如下(为了防止出现偶然性,我们每条SQL至少执行三次,取平均值)

文件存储格式 HDFS存储空间 不含group by 含group by
TextFile 7.3 G 105s 370s
Parquet 769.0 M 28s 195s
ORC 246.0 M 34s 310s
Sequence 7.8 G 135s 385s
RC 6.9 G 92s 330s
AVRO 8.0G 240s 530s

结论

  • 从占用存储空间来看,ORC和Parquet文件格式占用的空间相对而言要小得多。
  • 从执行SQL效率来看,Parquet文件格式查询耗时要相对而言要小得多。
打赏
  • 版权声明: 本博客所有文章除特别声明外,著作权归作者所有。转载请注明出处!
  • Copyrights © 2015-2023 henrrywan

请我喝杯咖啡吧~

支付宝
微信