1.数据集
下载地址http://www.seanlahman.com/files/database/lahman591-csv.zip
解压后只需要用到其中的Batting.csv.
2.启动HIVE
打开终端
输入su
,然后输入密码,
输入$HADOOP/sbin/start-all.sh
(启动hdfs文件系统和yarn,$HADOOP
就是Hadoop安装目录),
输入service mysqld start
(启动mysql),
运行$HIVE/bin/hive
(启动HIVE,运行完进入HIVE命令行)。
3.建表
- 创建数据库
create database baseball;
,use baseball;
- 建表
create table temp_batting (col_value STRING)
; - 本地数据录入表
load data local inpath '/home/hadoop/data/Batting.csv' into table temp_batting
- 创建只有有用信息的新表
create table batting (player_id STRING,year INT,runs INT);
- 提取信息到新表
insert overwrite table batting select
regexp_extract(col_value,'^(?:([^,]*)\,?){1}',1) player_id,
regexp_extract(col_value,'^(?:([^,]*)\,?){2}',1) year,
regexp_extract(col_value,'^(?:([^,]*)\,?){9}',1) run
from temp_batting;
- 查看新表前 10 行观察
select * from batting limit 10
,此时第一行数据是表头信息,删除这一行insert overwrite batting select * from batting where player_id != 'playerID'
4.分析
1.找出batting表中每年运动 runs 最高的记录,按 year 升序排列。
select year,max(runs) from batting group by year;
2.找出每年运动次数最高的参赛者的ID并输出,需要结合上述结果来得到最后结果。
select a.year,a.player_id,a.runs from batting a
join (select year,max(runs) runs from batting group by year) b
on (a.year=b.year and a.runs = b.runs);
结果2
参考文章:
作者:reylee911
来源:CSDN
原文:https://blog.csdn.net/github_26054561/article/details/46053091
网友评论