hive的存储格式

hive的存储格式分为两大类:一类纯文本文件,一类是二进制文件存储。

第一类: 纯文本文件存储

textfile: 纯文本文件存储格式,不压缩,也是hive的默认存储格式,磁盘开销大,数据解析开销大

第二类:二进制文件存储

- sequencefile:会压缩,不能使用load方式加载数据
- parquet:会压缩,不能使用load方式加载数据
- rcfile:会压缩,不能load。查询性能高,写操作慢,所需内存大,计算量大。此格式为行列混合存储,hive在该格式下,会尽量将附近的行和列的块存储到一起。
- orcfile:rcfile的升级版

存储格式的配置项

<property><name>hive.default.fileformat</name><value>TextFile</value><description>Expects one of [textfile, sequencefile, rcfile, orc].Default file format for CREATE TABLE statement. Users can explicitly override it by CREATE TABLE ... STORED AS [FORMAT]</description>
</property>

案例测试:

案例1:textfile

create external table if not exists stocks_1 (
exchange1 string,
symbol string,
ymd string,
price_open float,
price_high float,
price_low float,
price_close float,
volume int,
price_adj_close float
)
row format delimited
fields terminated by ','
stored as textfile;load data local inpath './data/stocks.csv' into table stocks_1;
在linux的命令行上使用hdfs dfs -put方法去上传到指定目录下。

案例2: sequencefile

create external table if not exists stocks_seq_1 (
exchange1 string,
symbol string,
ymd string,
price_open float,
price_high float,
price_low float,
price_close float,
volume int,
price_adj_close float
)
row format delimited
fields terminated by ','
stored as sequencefile
;使用insert into的方式加载数据
from stocks_1
insert into stocks_seq_1 select *
;或者使用克隆的方式:
create table stocks_seq_2 stored as sequencefile as select * from stocks_1;

案例3:parquet

create external table if not exists stocks_parquet (
exchange1 string,
symbol string,
ymd string,
price_open float,
price_high float,
price_low float,
price_close float,
volume int,
price_adj_close float
)
row format delimited
fields terminated by ','
stored as parquet
;使用insert into的方式加载数据
from stocks_1
insert into stocks_parquet select *
;或者使用克隆的方式:
create table stocks_parquet_1 stored as parquet as select * from stocks_1;

案例4:rcfile

create external table if not exists stocks_rcfile (
exchange1 string,
symbol string,
ymd string,
price_open float,
price_high float,
price_low float,
price_close float,
volume int,
price_adj_close float
)
row format delimited
fields terminated by ','
stored as rcfile
;使用insert into的方式加载数据
from stocks_1
insert into stocks_rcfile select *
;或者使用克隆的方式:
create table stocks_rcfile_2 stored as rcfile as select * from stocks_1;

案例5:orcfile

create external table if not exists stocks_orcfile (
exchange1 string,
symbol string,
ymd string,
price_open float,
price_high float,
price_low float,
price_close float,
volume int,
price_adj_close float
)
row format delimited
fields terminated by ','
stored as orcfile
;使用insert into的方式加载数据
from stocks_1
insert into stocks_orcfile select *
;或者使用克隆的方式:
create table stocks_orcfile_2 stored as orcfile as select * from stocks_1;

测试性能:

select count(*) from stocks_1;
select count(*) from stocks_seq_1;
select count(*) from stocks_parquet;
select count(*) from stocks_rcfile;
select count(*) from stocks_orcfile;
比较一下上述五个查询所需要的时间

全方位揭秘!大数据从0到1的完美落地之Hive存储格式相关推荐

  1. 全方位揭秘!大数据从0到1的完美落地之Hive自定义函数

    自定义函数 自定义函数介绍 hive的内置函数满足不了所有的业务需求.hive提供很多的模块可以自定义功能,比如:自定义函数.serde.输入输出格式等.而自定义函数可以分为以下三类: 1)UDF:u ...

  2. 全方位揭秘!大数据从0到1的完美落地之Hive介绍

    Hive定义 Hive是一个基于Hadoop的数据仓库工具,可以将结构化的数据文件映射成一张数据表,并可以使用类似SQL的方式来对数据文件进行读写以及管理.这套Hive SQL 简称HQL.Hive的 ...

  3. 全方位揭秘!大数据从0到1的完美落地之Hive分桶

    分桶的概述 为什么要分桶 数据分区可能导致有些分区数据过多,有些分区数据极少.分桶是将数据集分解为若干部分(数据文件)的另一种技术. 分区和分桶其实都是对数据更细粒度的管理.当单个分区或者表中的数据越 ...

  4. 全方位揭秘!大数据从0到1的完美落地之Hive企业级调优

    Hive企业级调优 调优原则已经在MR优化阶段已经有核心描述,优化Hive可以按照MR的优化思路来执行 优化的主要考虑方面: 环境方面:服务器的配置.容器的配置.环境搭建 具体软件配置参数: 代码级别 ...

  5. 全方位揭秘!大数据从0到1的完美落地之Hive窗口函数

    窗口函数 窗口函数over简介 先来看一下这个需求:求每个部门的员工信息以及部门的平均工资.在mysql中如何实现呢 求部门平均工资 select deptno ,avg(sal) from emp ...

  6. 全方位揭秘!大数据从0到1的完美落地之Hive分区

    分区简介 为什么分区 Hive的Select查询时,一般会扫描整个表内容.随着系统运行的时间越来越长,表的数据量越来越大,而hive查询做全表扫描,会消耗很多时间,降低效率.而有时候,我们需求的数据只 ...

  7. 全方位揭秘!大数据从0到1的完美落地之Hive查询操作

    Hive基本查询语法 基本使用规则 基本查询语句组成 select .. from ..join [tableName] on ..where ..group by ..having ..order ...

  8. 全方位揭秘!大数据从0到1的完美落地之Hive压缩

    Hive的压缩 HQL语句最终会被编译成Hadoop的Mapreduce job,因此hive的压缩设置,实际上就是对底层MR在处理数据时的压缩设置. hive在map阶段的压缩 map阶段的设置, ...

  9. 全方位揭秘!大数据从0到1的完美落地之Hive视图

    hive的视图 简介 hive的视图简单理解为逻辑上的表 hive只支持逻辑视图,不支持物化视图 视图存在的意义 对数据进行局部暴露(涉及隐私的数据不暴露) 简化复杂查询 创建视图: create v ...

最新文章

  1. C++/CLI思辨录之内部指针的两面性
  2. mysql数据库语句q_mysql数据库命令大全,mysql基本命令大全
  3. 第三章 系统指令与汇编程序设计 3.1 单片机指令系统
  4. Boost.Flyweight 键值测试的类
  5. DCB(串口的DCB结构)
  6. Java8新特性教程 - 终极指南
  7. python输入错误提示再次输入_Python实现用户登录并且输入错误三次后锁定该用户...
  8. 关于存储容量的单位(以及英文写法)
  9. matlab求组合数不想求组合数矩阵,【潘德的预言】用关系模型与组合数计算NPC最大相容人数和所有组合...
  10. 第七届“和苑和平节”促和平对话、文明健康、青年空间
  11. 探花交友_第7章-完善消息功能以及个人主页
  12. CSP-S 2022 总结
  13. EasyCVR前端关闭播放器,后端websocket播放链接依然存在是什么原因?
  14. html诗集代码简单,自制简单的诗歌搜索系统
  15. 入职外包公司一年,人废了
  16. web页面第三方天气预报插件
  17. lisp编译源代码为native可执行程序的过程(收集)
  18. 银笺生花,伴你浪迹天涯
  19. SDNUOJ 1089
  20. 在虚幻引擎5中构建你的首款游戏 - 05 - 岩石和植物

热门文章

  1. kis服务器组装,登录金蝶kis专业版为什么会显示无效服务器?
  2. 《Metasploit渗透测试魔鬼训练营》
  3. Mac常用快捷键汇总(程序员必会)
  4. 虚拟串口软件VSPM
  5. Host Switch Plus:基于浏览器的 Hosts 代理插件(Chrome)
  6. 目前JAVA实习生普遍需要掌握的技术有哪些?
  7. convert android layout xml,详解Android之解析XML文件三种方式(DOM,PULL,SAX)
  8. 优质项目坚实支撑 BIM技术前途一片光明
  9. 思科模拟器入门基础-单臂路由
  10. phpexcel数据导出分多个工作区(sheet)