Hive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供类SQL查询功能。
实时数据每隔一段时间,就要把历史数据放在数据仓库里,防止数据越来越大,导致查询越来越慢。数据仓库主要用于数据分析,可以按照主题进行存放,比如订单仓库,可以用来存放历史订单表、订单详情表、支付信息表等,不必考虑空间的问题。
hive是做离线数据分析,没有更新功能,不是用来做数据库的,不适合一条一条数据的插入,直接来读数据而不会去改数据。
一、为什么用Hive
直接使用hadoop所面临的问题
人员学习成本太高 ;
项目周期要求太短 ;
MapReduce实现复杂查询逻辑开发难度太大;
为什么要使用Hive
操作接口采用类SQL语法,提供快速开发的能力;
避免了去写MapReduce, 减少开发人员的学习成本;
扩展功能很方便。
二、Hive与传统数据库对比
总结:hive具有sql数据库的外表,但应用场景完全不同,hive只适合用来做批量数据统计分析,hive的sql不支持递归算法,也不擅长数据挖掘。
三、Hive安装
1、上传压缩包并解压到某一台机器上
2、修改配置文件
vi hive-site.xml
<configuration>
<!--配置hive的元数据信息到mysql中-->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>username to use against metastore database</description>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hadoop</value>
<description>password to use against metastore database</description>
</property>
</configuration>
3、将mysql的驱动包放到 lib下
4、解决jline-2.12.jar冲突
删除/home/hadoop-2.6.4/share/hadoop/yarn/lib 下的jline-0.9.94.jar
将hive下的jline-2.12.jar包拷贝到/home/hadoop-2.6.4/share/hadoop/yarn/lib下
cp jline-2.12.jar /home/hadoop-2.6.4/share/hadoop/yarn/lib
5、启动hive
方式一:本地启动
bin/hive hive
方式二: 远程连接
先在hadooop01上, ./home//hive/bin/hiveserver2
hiveserver2 &
启动成功后可以打开
http:// hadoop01:10002
在另一个打开的hadoop01上,./home//hive/bin/beeline
!connect jdbc:hive2://localhost:10000
备注:若是报code 2,内存不足,可以配置HDP客户端内存
jps -v | grep "native -Xmx" --查询内存
vi hadoop-env.sh
export HADOOP_CLIENT_OPTS="-Xmx1g $HADOOP_CLIENT_OPTS"
6、创建数据库
create database shizhan03;
7、强制删除数据库
drop table shizhan03 cascade;
四、 内部表&外部表
Hive 中包含以下数据模型:DB、table、external Table,partition、bucket。
内部表(table)和外部表(external Table) 区别:
1、外部表数据存放位置可以在任意指定路径,一般建表时使用location指定位置;内部表一般存放在user/hive/warehouse/下
2、删表后,外部表的元数据不在,数据还在;内部表的元数据和表目录都不在
3、对接外部数据的系统,用外部表;到数据仓库里,建立宽表,使用内部表
五、JDBC连接Hive
1、添加jar包
2、注册驱动
3、获取连接对象
4、获取执行sql语句的对象
5、执行sql数据,返回结果集
6、封装结果数据
7、释放资源
例如:
备注:一定要启动hiveServer2服务
更多java、大数据学习面试资料,请扫码关注我的公众号: