hive底层与数据库交互原理

一、Hive到底是什么

 

image.png

  1. 如何理解Hive

(1)从概念上来看

-> Hive是基于Hadoop的一个数据仓库工具;它是MapReduce的一个封装,底层就是MapReduce程序;

-> Hive可以将结构化的数据文件(eg:按照各字段分类的数据)映射成一张虚表,并提供类SQL查询功能;

-> 有了Hive后我们就不用再写麻烦的MapReduce程序了。

(2)从本质上来看

Hive就是把sql语句转化为MapReduce程序。

Hive没有服务端,它本质是Hadoop或者说是HDFS的一个客户端,对HDFS的数据和Meta store的元数据进行操作;

通常我们启动Hive是通过JDBC客户端操作的;

ps:对比hadoop中,通过命令start-dfs.sh启动HDFS服务端,然后通过hadoop fs -命令来启动HDFS客户端进行实际操作;

服务端是提供后台服务的,客户端是进行具体操作然后让服务端提供对应服务的。

  1. Hive中SQL-MapReduce原理图解

(1)事先将常用的SQL操作封装成MapReduce模板存放在Hive中;

(2)client依据实际需求写SQL语句,匹配对应的MapReduce模板,然后运行对应的MapReduce程序,

(3)生成相应的分析结果,返回给client。

所以说,Hive的本质是把SQL语句转化成了MapReduce程序。

  1. 为什么说Hive是基于Hadoop的呢?

(1)Hive处理的数据实际存放在HDFS中,默认路径/user/hive/warehouse;

(2)Hive分析数据的底层实现还是MapReduce程序;

(3)Hive调度资源时,用的是Yarn框架;

(4)在服务器中运行Hive之前需要群起HDFS和YARN。

二、Hive的优缺点

  1. 优点

(1)简单、只需要写SQL语句就行;

(2)Hive常用于数据分析,适合处理离线数据(静态数据);

(3)优势在于处理大数据;

(4)支持用户自定义函数;

ps:mysql适合处理数据的增删改查,适合处理实时数据(动态数据)

  1. 缺点

(1)Hive的表达有限,无法表达迭代式算法((第一个MapReducer程序的结果作为另一个MapReducer程序的输入,这种就是迭代式算法));

(2)数据挖掘不擅长(擅长数据挖掘的是Spark);

(3)Hive自动生成MapReduce作业,通常不够智能化,效率比较低;

(4)Hive调优一般比较困难,粒度较粗。
 

hive的三种交互方式

第一种****交互方式:****Hive交互shell

cd /export/servers/hive-1.1.0-cdh5.14.0

bin/hive

查看所有的数据库

hive (default)> show databases;

创建一个数据库

hive (default)> create database myhive;

使用该数据库并创建数据库表

hive (default)> use myhive;

hive (myhive)> create table test(id int,name string);

第二种****交互方式:****Hive JDBC服务

  就是启动一个服务

    前台启动:

cd /export/servers/hive-1.1.0-cdh5.14.0

bin/hive --service hiveserver2

    后台启动:

cd /export/servers/hive-1.1.0-cdh5.14.0

nohup bin/hive --service hiveserver2 2>&1 &

然后再通过beeline****连接hiveserver2:

bin/beeline

beeline> !connect jdbc:hive2://node03.hadoop.com:10000

第三种****交互方式:****Hive命令:

使用 –e 参数来直接执行hql的语句

bin/hive -e "use myhive;select * from test;"

使用 –f 参数通过指定文本文件来执行hql的语句

vim hive.sql

use myhive;select * from test;

bin/hive -f hive.sql

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值