Spark项目 - 准备数据

本节将结合上面的知识,用一个spark项目进行实战——分析NHL Game数据。

国家冰球联盟(英语National Hockey League,简写NHL),是一个由北美冰球队伍所组成的职业运动联盟。NHL是全世界最高层级的职业冰球比赛,为北美四大职业运动之一。队伍共分成东、西两个大区,每个大区各分为两个分区。

我们将进行以下步骤:

  1. 下载数据并上传到HDFS
  2. 进行ETL创建新表
  3. 分析数据

下载数据并上传到HDFS

访问 https://www.kaggle.com/datasets/martinellis/nhl-game-data

下载数据:

image-20240309233413356

下载完成后,里面是几个csv文件:

image-20240309234055695

它们的数据结构及关系如下图:

Data Structure

将上面的数据上传到EMR:

[root@ip-172-31-32-28 ~]# ls -la *.csv
-rw-r--r--. 1 root root   4110999 Dec 11  2020 game.csv
-rw-r--r--. 1 root root   5436430 Dec 11  2020 game_goalie_stats.csv
-rw-r--r--. 1 root root   5590914 Dec 11  2020 game_goals.csv
-rw-r--r--. 1 root root   4236010 Dec 11  2020 game_officials.csv
-rw-r--r--. 1 root root   6119488 Dec 11  2020 game_penalties.csv
-rw-r--r--. 1 root root 765128010 Dec 11  2020 game_plays.csv
-rw-r--r--. 1 root root 379190926 Dec 11  2020 game_plays_players.csv
-rw-r--r--. 1 root root   3117301 Dec 11  2020 game_scratches.csv
-rw-r--r--. 1 root root 420141138 Dec 11  2020 game_shifts.csv
-rw-r--r--. 1 root root  71503207 Dec 11  2020 game_skater_stats.csv
-rw-r--r--. 1 root root   4509010 Dec 11  2020 game_teams_stats.csv
-rw-r--r--. 1 root root    389688 Dec 11  2020 player_info.csv
-rw-r--r--. 1 root root      1953 Dec 11  2020 team_info.csv
[root@ip-172-31-32-28 ~]# pwd
/root

将上面数据上传到HDFS:

hdfs dfs -mkdir /user/spark/warehouse/nhl-data
hdfs dfs -put /root/*.csv /user/spark/warehouse/nhl-data/
hdfs dfs -ls /user/spark/warehouse/nhl-data/

此时在HDFS中就存在这几张表了:

image-20240309235501730