一、安装数据库MySQL
1.在VM虚拟机上面登录linux
2. 卸载linux自带的数据库依赖
yum remove mysql-libs -y
3. 下载客户端和服务端安装包,或者通过其他方式安装数据库(这里使用软件包安装数据库)
4. 安装数据库服务端
rpm -ivh MySQL-server-5.1.73-1.glibc23.x86_64.rpm
5. 安装数据库客户端
rpm -ivh MySQL-server-5.1.73-1.glibc23.x86_64.rpm
6. 登录数据库
mysql -u root
7.修改密码
set password for 'root'@'localhost' =password('123456');
7. 分配权限
grant all privileges on *.* to 'root'@'master' identified by '123456';
8. 刷新权限
flush privileges;
9. 退出并重新登录
exit; #退出数据库命令
10 重新登录
mysql -u root -p
# 回车输入密码
123456
二、安装hive
- 启动hadoop服务
start-all.sh
jps
- 解压hive压缩包
tar -zxvf apache-hive-2.1.0-bin.tar.gz
自己去官网下载apache-hive-2.1.0-bin.tar.gz
- 重命名hive文件夹
mv apache-hive-2.1.0-bin hive
- 添加hive环境变量
vi /etc/profile.d/hive.sh
插入环境变量
export HIVE_HOME=/opt/soft/hive
export PATH=$HIVE_HOME/bin:$PATH
:wq 保存退出
刷新执行文件
source /etc/profile.d/hive.sh
- 进入hive下面的conf文件夹 拷贝文件
拷贝这两个文件 重命名为
hive-default.xml.template => hive-site.xml
hive-env.sh.template => hive-env.sh
cd /opt/soft/hive/conf/ #进入hive下面的conf文件夹
cp hive-default.xml.template hive-site.xml #拷贝
cp hive-env.sh.template hive-env.sh #拷贝
- 修改 hive-env.sh文件
vi hive-env.sh
在头部插入 三行配置
export JAVA_HOME=/opt/soft/jdk
export HADOOP_HOME=/opt/soft/hadoop
export HIVE_HOME=/opt/soft/hive
- 修改hive-site配置文件
:set nu #显示行数
/关键字 回车 #查找文件内容 n N 上下切换
:496 #修改为 jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true
:928 #修改为 com.mysql.jdbc.Driver
:953 #修改为 root
:481 #修改为 123456
:1496 #修改为 /opt/soft/hive/tmp
:44 #修改为 /opt/soft/hive/tmp
:49 #修改为 /opt/soft/hive/tmp
在hive-site.xml文件中修改相关配置内容,修改如下
修改属性“ javax.jdo.option.ConnectionURL ”的值为“ jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true ”
修改属性“ javax.jdo.option.ConnectionDriverName ”的值为“ com.mysql.jdbc.Driver ”
修改属性“ javax.jdo.option.ConnectionUserName ”的值为“ root ”
修改属性“ javax.jdo.option.ConnectionPassword ”的值为“ 123456 ”
修改属性“ hive.querylog.location ”的值为“ /opt/soft/hive/tmp ”
修改属性“ hive.exec.local.scratchdir ”的值为“ /opt/soft/hive/tmp ”
修改属性“ hive.downloaded.resources.dir ”的值为“ /opt/soft/hive/tmp ”
- 复制MySQL的驱动包到hive的lib文件夹下
cp /opt/soft/mysql-connector-java-5.1.39.jar /opt/soft/hive/lib/
- 初始元数据仓库
在【/opt/soft/hive/bin】
cd /opt/soft/hive/bin/
./schematool -initSchema -dbType mysql -userName root -passWord 123456
- 查看hive是否启动成功
进入数据库
mysql -u root -p
123456
使用命令查看连接
show databases;
有hive表示启动成功
exit;
退出数据库
三、hive的基本使用
在linux里面先准备好txt测试测试数据(数据在文章末尾,直接Ctrl+c+v)
- 创建info.txt 文件夹,把文章末尾的数据复制进去
1、 进入hive
1. 查看当前数据库:set hive.cli.print.current.db = true;
2. 创建数据库:create database testdb1;
3. 查看所有数据库:show databases;
4. 使用指定数据库:use testdb1;
5. 删除数据库:drop database testdb1;
创建数据库mytest
# 使用这个数据库 use mytest;
use mytest;
使用mytest数据库
在mytest里面创建表
create table tb_map(id int,className string,name string,sex string,score map<string,float>)
row format delimited
fields terminated by '\t'
collection items terminated by ','
map keys terminated by '='
lines terminated by '\n'
stored as textfile;
英文关键字解析:
comment 'employee details' #表注释
row format delimited #行格式限定
fields terminated by '\t' #数据分隔
lines terminated by '\n' #行分隔
stored as textfile; #默认文件格式
1、CREATE TABLE 创建一个指定名字的表,如果库中已有相同名的表,则抛出异常;
用户可以使用 IF NOT EXISTS 选项来忽略此异常。
2、EXTERNAL 关键字可以让用户创建一个外部表(默认创建内部表)。外部表在建表的同时必须指定一个指向实际数据的路径(LOCATION)
,Hive在创建内部表时,会将数据移动到数据仓库指向的路径;若创建外部表,仅记录数据所在的路径,不对数据的位置做任何改变。在删除
表的时候,内部表的元数据和数据会被一起删除,而外部表只删除元数据,不删除数据。
3、COMMENT 是给表字段或者表内容添加注释说明的。
4、PARTITIONED BY 给表做分区,决定了表是否为分区表。
5、CLUSTERED BY 对于每一个表(table)或者分区, Hive 可以进一步组织成桶,也就是说桶是更为细粒度的数据范围划分,Hive采用对
列值哈希,然后除以桶的个数求余的方式决定该条记录存放在哪个桶当中。
6、ROW FORMAT DELIMITED FIELDS TERMINATED BY ‘,’, 这里指定表存储中列的分隔符,默认是 \001,这里指定的是逗号分隔符,还可
以指定其他列的分隔符。
7、STORED AS SEQUENCEFILE|TEXTFILE|RCFILE,如果文件数据是纯文本,可以使用 STORED AS TEXTFILE,如果数据需要压缩,使用
STORED AS SEQUENCEFILE。
8、LOCATION 定义 hive 表的数据在 hdfs 上的存储路径,一般管理表(内部表不不要自定义),但是如果定义的是外部表,则>需要直接指定
一个路径。
查看表结构
desc tb_map;
2、上传数据到hive数据库里面(hive和数据库一样)(两种方式)
- (本地上传)把数据上传到hive 数据库里面
# 路径 表名
load data local inpath '/opt/temp/info.txt' into table tb_map;
- (hadoop远程上传) 使用hadoop上传数据
# 把数据上传到hadoop
hadoop fs -put /info.txt
# 再把hadoop的数据 上传到hive数据库里面
load data inpath '/info.txt' into table tb_map;
3、 开始测试hive数据处理
- 各班级【男生】的所有科目的总成绩与平均成绩
select className,sum(score["java"])+sum(score["php"])+sum(score["python"]),
round((avg(score["java"])+avg(score["php"])+avg(score["python"]))/3,2)
from tb_map where sex='男' group by className;
- 各班级【女生】的所有科目的总成绩与平均成绩
select className,sum(score["java"])+sum(score["php"])+sum(score["python"]),
round((avg(score["java"])+avg(score["php"])+avg(score["python"]))/3,2)
from tb_map where sex='女' group by className;
1 地字一号 宿宿赵 女 java=64,php=84,python=66
2 地字一号 生华宿 男 java=86,php=65,python=98
3 黄字一号 湘彭管 女 java=78,php=83,python=97
4 东宫正品 王彭二 女 java=65,php=76,python=96
5 玄字一号 赵宿湘 男 java=84,php=84,python=65
6 地字一号 赵钱宿 男 java=99,php=90,python=91
7 玄字一号 生华梦 女 java=84,php=80,python=65
8 黄字一号 二彭宿 男 java=92,php=94,python=68
9 天字一号 星湘 男 java=100,php=84,python=98
10 地字一号 星胡彭 男 java=74,php=77,python=70
11 天字一号 里生星 男 java=85,php=82,python=70
12 天字一号 生胡赵 男 java=73,php=93,python=90
13 天字一号 管彭 男 java=85,php=72,python=96
14 地字一号 二赵韦 男 java=62,php=75,python=60
15 黄字一号 星王胡 男 java=83,php=91,python=87
16 东宫正品 湘琴赵 男 java=88,php=70,python=67
17 黄字一号 生风 女 java=81,php=99,python=84
18 玄字一号 管钱梦 女 java=71,php=94,python=93
19 东宫正品 琴春覃 男 java=91,php=66,python=78
20 黄字一号 王宿李 男 java=61,php=90,python=72
21 黄字一号 星韦邓张 女 java=62,php=84,python=78
22 黄字一号 风二钱 男 java=85,php=80,python=65
23 东宫正品 土风生 男 java=96,php=99,python=74
24 东宫正品 钱华赵 女 java=99,php=81,python=90
25 天字一号 二华赵 男 java=96,php=91,python=96
26 玄字一号 星彭赵 女 java=96,php=71,python=82
27 玄字一号 宿春土 男 java=65,php=67,python=88
28 东宫正品 华邓张华 女 java=61,php=74,python=72
29 天字一号 韦彭 男 java=82,php=92,python=73
30 地字一号 琴春胡 男 java=71,php=99,python=76
31 天字一号 管华胡 男 java=90,php=81,python=68
32 黄字一号 琴宿生 女 java=72,php=91,python=60
33 玄字一号 钱春管 男 java=99,php=95,python=65
34 黄字一号 韦生覃 女 java=83,php=68,python=88
35 东宫正品 胡宿 男 java=60,php=92,python=70
36 天字一号 生梦赵 男 java=74,php=100,python=76
37 天字一号 风春风 男 java=98,php=60,python=85
38 天字一号 赵管赵 男 java=100,php=78,python=82
39 玄字一号 二王赵 女 java=100,php=86,python=79
40 天字一号 王彭里 男 java=90,php=80,python=100
41 地字一号 管二邓张 男 java=78,php=91,python=99
42 天字一号 赵星湘 男 java=83,php=90,python=94
43 天字一号 管管胡 女 java=71,php=83,python=97
44 黄字一号 湘彭星 男 java=92,php=93,python=78
45 黄字一号 赵土邓张 女 java=60,php=62,python=81
46 黄字一号 梦王湘 男 java=99,php=70,python=81
47 玄字一号 彭二湘 男 java=99,php=98,python=71
48 黄字一号 风生管 男 java=70,php=77,python=71
49 天字一号 琴赵邓张 男 java=76,php=95,python=77
50 黄字一号 赵华宿 男 java=85,php=72,python=88
51 东宫正品 王春钱 女 java=65,php=89,python=87
52 黄字一号 王土李 女 java=91,php=79,python=68
53 东宫正品 琴王里 男 java=82,php=64,python=92
54 黄字一号 风赵李 男 java=63,php=67,python=72
55 地字一号 邓张赵春 男 java=76,php=98,python=87
56 地字一号 梦二生 男 java=68,php=96,python=96
57 东宫正品 覃华风 男 java=68,php=91,python=65
58 东宫正品 王梦覃 女 java=79,php=75,python=77
59 玄字一号 邓张王管 女 java=89,php=94,python=76
60 东宫正品 钱管王 男 java=87,php=99,python=85
61 东宫正品 赵里管 女 java=90,php=63,python=90
62 东宫正品 李韦星 女 java=79,php=87,python=79
63 玄字一号 李彭胡 男 java=76,php=67,python=89
64 地字一号 王宿星 男 java=67,php=96,python=94
65 玄字一号 星二湘 女 java=74,php=92,python=73
66 黄字一号 春风 男 java=85,php=80,python=77
67 东宫正品 梦韦邓张 男 java=67,php=62,python=74
68 东宫正品 华里韦 男 java=78,php=65,python=64
69 黄字一号 华宿琴 男 java=75,php=70,python=98
70 玄字一号 管管琴 男 java=80,php=67,python=64
71 黄字一号 彭王 女 java=85,php=88,python=81
72 黄字一号 里生 男 java=80,php=98,python=80
73 东宫正品 韦风生 女 java=60,php=94,python=81
74 东宫正品 生管胡 女 java=65,php=82,python=97
75 地字一号 生钱二 女 java=96,php=80,python=73
76 东宫正品 二琴里 女 java=83,php=63,python=97
77 黄字一号 星二王 女 java=99,php=64,python=61
78 东宫正品 土梦梦 女 java=76,php=95,python=74
79 天字一号 春土生 男 java=99,php=99,python=78
80 玄字一号 梦土春 男 java=93,php=82,python=73
81 地字一号 彭星钱 男 java=69,php=91,python=76
82 天字一号 李风管 女 java=60,php=61,python=63
83 地字一号 彭赵赵 男 java=78,php=78,python=62
84 天字一号 里胡胡 女 java=87,php=65,python=98
85 玄字一号 邓张覃覃 女 java=66,php=88,python=73
86 东宫正品 胡钱覃 男 java=90,php=80,python=75
87 天字一号 琴覃土 女 java=89,php=70,python=94
88 玄字一号 覃二琴 女 java=72,php=96,python=99
89 黄字一号 梦彭韦 男 java=79,php=91,python=85
90 地字一号 管生华 女 java=83,php=88,python=92
91 天字一号 宿宿生 女 java=95,php=87,python=70
92 玄字一号 赵彭钱 男 java=77,php=70,python=83
93 东宫正品 彭钱湘 男 java=66,php=89,python=87
94 天字一号 钱邓张琴 女 java=99,php=69,python=93
95 黄字一号 王管赵 男 java=89,php=61,python=84
96 黄字一号 韦风管 男 java=95,php=79,python=93
97 天字一号 春胡里 男 java=80,php=70,python=89
98 天字一号 彭春 女 java=96,php=74,python=95
99 地字一号 李里琴 男 java=77,php=97,python=73
100 黄字一号 管二风 女 java=99,php=89,python=63