基于hadoop的一个数据仓库工具。
所谓数据仓库:是为企业所有级别的决策制定过程,提供所有类型数据支持的战略集合。它是单个数据存储,出于分析性报告和决策支持目的而创建。 为需要业务智能的企业,提供指导业务流程改进、监视时间、成本、质量以及控制。
用来做查询分析的数据库。基本不用做插入、修改、删除。
将结构化的数据文件映射成一张数据库表,可将sql语句转化为mapreduce任务进行运行。
操作符是hive的最小处理单元。
一个Operator是hive定义的一个处理过程。
Hive三种模式:1 内嵌模式(Derby) 2 本地模式(本地Mysql) 3 远程模式(Mysql)。
Hive运行时,元数据存在关系型数据库里,数据存在HDFS上。
Hive-DDL操作: https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL
CREATE TABLE person(
id INT, //不区分大小写
name STRING,
age INT,
fav ARRAY<STRING>, //字符串数组类型字段
addr MAP<STRING,STRING> //map类型字段
)
COMMENT 'This is the person table'
PARTITIONED BY(dt STRING) //按天分区
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' //每一行数据每个字段按制表符分割
COLLECTION ITEMS TERMINATED BY '-' //每一个容器数据按"-"分割
MAP KEYS TERMINATED BY ':' //map的键值按冒号分割
STORED AS TEXTFILE; //以文本文件形式存储
Hive分区--partition by(dt STRING),可单分区 也可多分区。
Hive-DML操作:
Hive导入数据 : Load data local inpath'file.txt' overwrite into table tab_name
FROM person p
INSERT OVERWRITE TABLE person1
SELECT p.id, p.name, p.age, p.fav
INSERT OVERWRITE TABLE person2
SELECT p.id, p.name, p.age;
Hive的安装步骤: 要配置环境变量
- hadoop集群,hdfs mapreduce启动
- 关掉安全模式,hadoop dfsadmin –safemode leave
- Tar包上传解压,进去conf目录
- 复制一个配置文件,cp hive-default.xml.template hive-site.xml
- 清空修改hive-site.xml内容
- 单用户模式:
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive_remote/warehouse</value>
</property>
<property>
<name>hive.metastore.local</name>
<value>true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.57.6:3306/hive_remote?createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>password</value>
</property>
7.多用户模式分服务器端和客户端
a) 服务器端
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.57.6:3306/hive?createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>
b) 客户端
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<property>
<name>hive.metastore.local</name>
<value>false</value>
</property>
<property>
<name>hive.metastore.uris</name>
<value>thrift://192.168.57.5:9083</value>
</property>
8.将hadoop中jline的jar包替换成hive中新版本的包,hive中lib下的jline包替换掉hadoop-2.5.2\share\hadoop\yarn\lib下的jline包
9.安装mysql库,上面的配置文件里面的mysql地址就配置这个地址
10.将mysql jdbc的驱动包放到hive/lib目录下
11.yum –y install mysql-server
12.mysql –uroot –p 进去mysql,默认密码是空
a) use mysql
b) delete from user where user='';
c) update user set host='%' where host='localhost';
d) update user set password=PASSWORD('123456') where user='root';
e) flush privileges;
13.单用户启动bin/hive
14.多用户启动,先在服务器端,bin/hive --service metastore
再在客户端bin/hive启动