Hive数据仓库操作
Hive数据库安装的三种方式
内嵌模式安装
内嵌derby数据库:一个会话连接,常用于简单测试
-
启动hadoop集群
1 start-dfs.sh 2 start-yarn.sh 3 jps
-
查找hive压缩包
1 find / -name *hive*.tar.gz
-
解压hive压缩包到/opt目录下
1 tar -zxvf /root/experiment/file/apache-hive-2.1.1-bin.tar.gz -C /opt/ 2 # 查看是否解压成功 3 ls /opt/ 4 # 重命名apache-hive-2.1.1-bin为hive 5 mv apache-hive-2.1.1-bin hive 6 # 查看是否重命名成功 7 ls /opt/
-
在profile中配置hive环境变量
1 vi /etc/profile 2 # 在HADOOP环境变量下方添加HIVE环境变量 3 export HIVE_HOME=/opt/hive 4 export PATH=$HIVE_HOME/bin:$PATH 5 # 使profile文件配置生效 6 source /etc/profile 7 # 查看所有环境变量,是否有/opt/hive/bin 8 echo $PATH
-
初始化Hive元数据
1 schematool -dbType derby -initSchema 2 # 查看数据库文件 3 ls
初始化结束后会生成derby.log 和 metastore_db目录(存储derby数据库,保存元数据),数据存放在hdfs上
-
进入Hive Shell
1 hive
-
Hive Shell操作
1 # 显示数据库 2 show databases; 3 # 显示表 4 show tables; 5 # 显示函数 6 show functions; 7 # 查看HDFS 8 dfs -ls -R /; 9 # 退出Hive Shell 10 quit; 11 exit;
本地模式安装
-
进入Mysql
1 mysql 2 # 创建数据库 3 create database hive; 4 # 查看是否创建成功 5 show databases;
-
Mysql授权
1 grant all privileges on *.* to 'root'@'master' identified by 'root'; 2 grant all privileges on *.* to 'root'@'%' identified by 'root'; 3 # 刷新系统权限相关表 4 flush privileges; 5 # 查看权限 6 show databases; 7 use mysql; 8 show tables; 9 desc user; 10 select Host,User,Super_priv from user; 11 # 退出Mysql 12 quit();
-
拷贝Hive需要的mysql依赖包mysql-connector-java-5.1.42.jar 至hive/lib目录下
1 # 查找jar包的位置 2 find / -name mysql*.jar 3 # 拷贝jar包 4 cp /root/experiment/file/mysql-connector-java-5.1.42.jar /opt/hive/lib 5 # 查看/opt/hive/lib目录是否有 6 ls /opt/hive/lib
-
进入hive的conf目录下,配置hive相关配置文件参数
1 cd /opt/hive/conf 2 # 查看conf目录下内容 3 ls
-
hive-site.xml
1 cp hive-default.xml.template hive-site.xml 2 # 查看是否生成hive-site.xml 3 ls 4 # 配置hive-site.xml文件 5 vi hive-site.xml 6 # 查找ConnectionURL 7 :?ConnectionURL 8 # 显示行号 9 :set nu 10 # 删除无关内容 11 :18,498d 12 :21,25d 13 :22,4862d 14 # 取消显示行号 15 :set nonu
配置文件
1 <configuration> 2 <property> 3 <name>javax.jdo.option.ConnectionURL</name> 4 <value>jdbc:mysql://master:3306/hive</value> 5 </property> 6 <property> 7 <name>javax.jdo.option.ConnectionDriverName</name> 8 <value>com.mysql.jdbc.Driver</value> 9 </property> 10 <property> 11 <name>javax.jdo.option.ConnectionUserName</name> 12 <value>root</value> 13 </property> 14 <property> 15 <name>javax.jdo.option.ConnectionPassword</name> 16 <value>root</value> 17 </property> 18 </configuration>
-
-
初始化数据库
1 schematool -dbType mysql -initSchema 2 hive 3 show tables; 4 show functions;
-
操作Hive
在Mysql中查看TBLS表来查看Hive是否建表 Hive中创建的表的字段信息会自动存入到MySQL的hive数据库COLUMNS_V2表中
远程模式安装
Hive Shell操作表和数据
-
上传数据到集群上
-
创建表
1 create table stu_info( 2 id int, 3 name string, 4 age int) row format delimited 5 fields terminated by '\\\\t'; 6 # 指定数据库位置,目录会自动建立 7 create table stu_info( 8 id int, 9 name string, 10 age int) location '/pcc/stu_info'; 11 # 将另一个表的数据给一个新表 12 create table stu_info row format delimited 13 fields terminated by ',' AS select * from stu_info; 14 # 建立分区表 15 create table stu_info_0 (id int, name string) partitioned by(age int) 16 row format delimited fields terminated by ',';
-
导入数据
1 # 导入集群文件 2 load data inpath '/pcc/file' overwrite into table stu_info; 3 # 导入本地文件 4 load data local inpath '/home/file' overwrite into table stu_info; 5 # 向分区中导入数据 6 insert overwrite table stu_info_0 patition(age=22) 7 select id, name from stu_info where age=22;
-
导出数据
1 create table t1 as select * from stu_info where gender = 'male';
小石小石摩西摩西的学习笔记,欢迎提问,欢迎指正!!!