大数据学习之Hive数据仓库 20
一:hive概述
Apache Hive™数据仓库软件有助于使用SQL读取,编写和管理驻留在分布式存储中的大型数据集。
可以将结构投影到已存储的数据中。提供了命令行工具和JDBC驱动程序以将用户连接到Hive。
数据计算:mapreduce分布式计算>难度大
hive>SQL语句 mysql 简化开发 减少学习成本
二:优缺点
优点:
(1)操作接口采用了sql,简化开发,减少学习成本
(2)避免手写mapreduce程序
(3)hive执行延迟较高,适用场景大多用在对实时性要求不强的情景
(4)优点在于处理大数据
(5)支持自定义函数
缺点:
(1)hive的sql表达能力有限(HSQl)
(2)hive效率低
三:hive架构
提供了一系列接口:hive shell、jdbc/odbc、webui
四:Hive安装
1)下载安装包
http://hive.apache.org/downloads.html
2)上传安装包
alt+p
3) 解压
tar -zxvf .tar
4) 修改配置文件
vi hive-env.sh
HADOOP_HOME=/root/training/hadoop-2.8.4
export HIVE_CONF_DIR=/root/training/hive/conf
5) 启动hive前启动hadoop集群
start-dfs.sh
start-yarn.sh
start-all.sh
6) 在hdfs上创建文件夹
hdfs dfs -mkdir /tmp
hdfs dfs -mkdir -p /user/hive/warehouse/
7) 启动hive
bin/hive
五:hive测试
1)查看数据库
show databases;
2) 使用数据库
use default;
3) 查看表
show tables;
4) 创建表
create table itstar(id int,name string);
5)插入数据
insert into itstar values(1,"hunter");
6) 查询
select * from itstar;
7) 删除表
drop table itstar;
8) 退出终端
quit;
六:操作数据
1)准备数据
vi istar.txt
1 hunter
2 zhangsan
3 delireba
4 yangmi
5 baby
2)创建hive表
create table itstar(id int,name string)
row format
delimited fields
terminated by "\t";
3)加载数据
load data local inpath '/root/itstar.txt' into table itstar;
七:配置hive元数据到mysql
为什么将原数据存在MySQL中?因为默认是将元数据信息存在Derby数据库中的,该数据库只能一个人进行操作,所以不是很好。改用MySQL存储元信息可以解决这个问题!!
前提:已经装好了MYSQL,关于如何在Linux中安装MySQL在上一篇文章就是如何装MySQL
1)驱动拷贝
拷贝mysqlconnectorjava5.1.27bin.jar到/root/hd/hive/lib/下
2)配置Metastore到MySql
-》在/root/hd/hive/conf目录下创建一个hive-site.xml
-》根据官方文档配置参数,拷贝数据到hive-site.xml文件中(hive/conf/下创建文件)
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/metastore?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>199902</value>
<description>password to use against metastore database</description>
</property>
</configuration>
八:hive数据类型