- 实验目的
理解Hive的设计和查询方法;掌握Hive安装配置和管理方法;掌握Hive Java API编程环境配置及开发方法。
- 实验内容
Hive安装
Hive命令行应用
- 实验步骤
- 安装配置hive
- 内部表应用
- 外部表应用
- 实验结果
将hive上传到了根目录下
创建hive的安装目录
将hive解压到刚刚创建的目录下
Vi /etc/profile,配置环境变量,添加hive的环境变量
source /etc/profile,让环境变量生效
进入hive安装目录下的conf目录
cd /home/hive/apache-hive-3.1.2/conf
从模板复制一个配置文件并打开
cp hive-env.sh.template hive-env.sh
vi hive-env.sh
在文件末尾增加如下两行
启动Hadoop HDFS和YARN
初次执行时,先初始化derby元数据库
cd进入hive安装目录:
schematool -initSchema -dbType derby
Derby会在第一次启动初始化命令时,在当前所在目录创建元数据库文件(metastore_db)
输入hive -version,查看hive版本,使用的版本为3.1.2
进入hive安装目录,执行命令:hive,出现hive>代表启动成功
退出hive,hive的命令都需要以‘;’结尾
测试hive功能,创建表
显示所有表 命令:show tables;
显示指定表的结构 命令:desc student;
向student表插入多条数据 命令:insert into 表名 values 每个插入数据用()包括,以’,’分割
查询数据
1. 内部表应用
(1) 创建内部表Student,要求的字段和类型: id int, name string, sex string, age int
insert语句录入以下数据:
id name sex age
1 Tom M 18
2 Trill M 19
3 Bell M 20
4 Lisa F 19
5 Willy F 18
查询表内所有数据,插入成功
-
- 查询所有男生
-
- 查询大于18岁的学生,并按年龄升序排列 order by age ASC代表升序排列
2. 外部表应用
(1) 将本实验数据上传至HDFS,数据为stock-daily30d2.txt,此数据修改了实验4的数据中的日期格式以支持Hive中的Date数据类型。
(2) 创建外部表Stock,具体的字段名称和类型为:code string, isst boolean, open float, close float, high float, low float, volume float, money float, factor float, high_limit float, low_limit float, avg float, paused boolean, trade_date date;
CREATE EXTERNAL TABLE IF NOT EXISTS Stock (code STRING, isst BOOLEAN, open FLOAT, close FLOAT, high FLOAT, low FLOAT, volume FLOAT, money FLOAT, factor FLOAT, high_limit FLOAT, low_limit FLOAT, avg FLOAT, paused BOOLEAN, trade_date DATE ) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t' STORED AS TEXTFILE LOCATION '/usr/data';
数据放在/usr/data下,根据文件所在目录查找,只需要输入目录位置,一行的数据以’\t’分割
-
- 查询上证所的股票数量,代码以.SH结尾的股票 like可以进行模糊匹配,’%’表示有多个字符
部分结果
查询每日市场总交易量(万元)
结果须包含日期和对应的中交易量数据
结果按时间做降序排列
市场总交易量为当天所有股票交易量(万元)之和 order by trade_date DESC 代表查询结果以降序排列
查询结果如下
搜索所有交易日,并对交易日编号(保存中间数据到tradedate表)
表结构如下
利用连接查询,搜索提取计算所需股票代码和收盘价,并将交易日标记上对应编号(保存中间数据到closewithid表),join on 把Stock表和tradedate表以trade_date的条件进行连接
利用自连接,让股票当日收益与该股票前第五日收益连接在同一行中,并计算五日收益率,此计算对每个股票和交易日都生效(保存中间数据到rollreturn表)自连接:两个相同的表进行连接
表结构
查询某只股票的五日滚动收益率
查询结果
- 计算所有股票平均每日收益率
部分结果