具有价值的专业网站建设平台,wordpress 首页添加链接地址,c2c模式的概念,厦门正规网站建设多少文章目录3 HIVE3.1 Hive概述Hive简介Hive应用场景Hive与传统数据仓库比较Hive优点3.2 Hive功能及架构Hive运行流程Hive数据存储模型Hive数据存储模型-分区和分桶Hive数据存储模型-托管表和外部表Hive支持的函数3.3 Hive基本操作Hive使用DDL操作DML操作DQL操作3 HIVE
Apache Hi…
文章目录3 HIVE3.1 Hive概述Hive简介Hive应用场景Hive与传统数据仓库比较Hive优点3.2 Hive功能及架构Hive运行流程Hive数据存储模型Hive数据存储模型-分区和分桶Hive数据存储模型-托管表和外部表Hive支持的函数3.3 Hive基本操作Hive使用DDL操作DML操作DQL操作3 HIVE
Apache Hive数据仓库软件有助于使用SQL读取写入和管理驻留在分布式存储中的大型数据集。可以将结构投影到已经存储的数据上。提供了命令行工具和JDBC驱动程序以将用户连接到Hive上。
3.1 Hive概述
Hive简介
HiveHive是基于Hadoop的数据仓库软件可以查询和管理PB级别的分布式数据。
Hive特性
灵活方便的ETL(extract/transform/load)。支持TezSpark等多种引擎可直接访问HDFS文件以及HBase易用易编程 Hive应用场景 Hive与传统数据仓库比较
Hive传统数据仓库存储HDFS理论上有无限拓展的可能集群存储存在容量上限而且随着容量的增长计算速度急剧下降只能适应与数据量比较小的商业应用对于超大规模数据无能为力执行引擎默认执行引擎Tez可以选择更加高效的算法来查询也可以进行更多的优化措施来提高速度使用方式HQLSQL灵活性元数据存储独立于数据存储之外从而解耦合元数据和数据低数据用途单一分析速度计算依赖于集群规模易拓展在数据容量较小时非常快速数据容量较大时急剧下降索引效率较低高效易用性需要自行开发应用模型灵活度较高但易用性较低集成一整套成熟的报表解决方案可以较为方便的进行数据的分析可靠性数据存储在HDFS可靠性高、容错性高可靠性较低一次查询失败需要重新开始。数据容错依赖于硬件Raid依赖环境依赖硬件较低可适应一般的普通机器依赖于高性能的商业服务器价格开源产品商用比较昂贵
Hive优点
高可靠、高容错HiveServer采用集群模式双MetaStore超时重试机制类SQL指HQL其类似于SQL语法内置了大量函数可扩展自定义存储格式和函数多接口Beeline、JDBC、Thrift、Python、ODBC 3.2 Hive功能及架构
Hive运行流程
Client提交HQL命令Tez执行查询YARN为集群中的应用程序分配资源并未YARN队列中的Hive作业启用授权Hive根据表类型更新HDFS或Hive仓库的数据Hive通过JDBC连接返回查询结果 Hive数据存储模型
表中可分区或分桶分区还可继续分区或分桶。 Hive数据存储模型-分区和分桶
分区数据表可以按照某个字段的值划分分区。我们可以这么理解将一个表的数据拆分出来放在不同的文件夹(目录)下。这样的话分区的本质就是目录分区数量也不固定分区下可再有分区或者桶。
桶数据可以根据桶的方式将不同数据放入不同的桶中。我们可以这么理解一个表的数据拆分出来后肯定不是说直接放在文件夹下而是放在文件中至于这个文件是在根目录还是某个分区目录我们就不得而知了我们称这个文件为桶。桶中基本的原理遵循数据结构中的桶排序建表时可以指定桶个数桶内可排序。数据按照某个字段的值Hash后放入某个桶中。 Hive数据存储模型-托管表和外部表
托管表创建表若不指定表的类型即默认为托管表Hive会将创建后的表移动到仓库目录。
外部表若指定创建外部表则Hive会到数据仓库目录以外的位置访问该表的数据。
说明如果所有处理都有Hive完成建议使用托管表。如果要用Hive和其他工具搭配使用来处理同一个数据集建议使用外部表。
托管表外部表CREATE/LOAD数据移动仓库目录数据位置不移动DROP元数据和数据会被一起删除只删除元数据Hive支持的函数
内置函数
数学函数:如round(),floor(),abs(),rand()等日期函数如to_date(),month(),day()等字符串函数如trim(),length(),substr()等
用户自定义函数(UserDefinedFunction) 3.3 Hive基本操作
Hive使用
打开服务器
$HIVE_HOME/bin/hiveserver2
//通过beeline连接
$HIVE_HOME/bin/beeline -u jdbc:hive2://$HS2_HOST:$HS2_PORT向其他大数据组件公开自己元数据
$HIVE_HOME/hcatalog/sbin/hcat_server.sh从Hive发行版0.11.0及更高版本的shell中运行WebHCat服务器
$HIVE_HOME/hcatalog/sbin/webhhcar_server.shDDL操作
创建表
create table pokes(foo int,bar string);
//指定分区
create table invites(foo int,bar string) partitioned by (ds string);浏览表
show tables描述表
describe invites修改表
alter table events rename to 3koobecaf;
alter table pokes add columns (new_col int)DML操作
向表里加载数据
load datalocal inpath ./exaples/files/kv1.txt overwrite into table pokes;
load data local inpath ./examples/files/kv2.txt overwrite into table invites partition (ds2008-08-15)导入数据出HDFS
export table invites to /departmentDQL操作
selects and filters
select a.foo from invites a where a.ds 2008-08-15;
insert overwrite directory /tmp/hdfs_out select a.* from invires a where a.ds2008-08-15;group by
from invites a insert overwrite table events select a.bar,count(*) where a.foo 0 group by a.bar;
insert overwrite table events select a.bar,count(*) from invites a where a.foo0 group by a.bar;多次插入
from src
insert overwrite table dest1 select src.* where src.key100
insert overwrite table dest2 select src.key,src.value where src.key 100 and src.key200;多表联查
from pokes t1 join invites t2 on (t1.bar t2.bar) insert overwrite table events select t1.bar,t1.foo,t2.foo;