Spark SQL数据分析实验
配置实验环境
1. 预置实验环境
点击实验桌面左上角,账号下方的“预置实验环境”按钮,进行基础的华为云服务预置。
2. 操作前提:登录华为云
进入【实验操作桌面】,打开浏览器进入华为云登录页面。选择【IAM用户登录】模式,于登录对话框中输入系统为您分配的华为云实验账号和密码登录华为云,如下图所示:
1. 使用Spark SQL进行学员数据分析
1.1 数据准备
在Terminal中以root身份进行操作;
在【实验操作桌面】,双击“Xfce终端”打开Terminal,执行如下命令(使用弹性公网IP地址替换命令中的EIP),登录master节点。
ssh root@EIP
①接受秘钥:输入“yes”回车,密码获取方式如图;
②输入密码:输入密码时,命令行窗口不会显示密码,输完之后直接回车; 登录成功如下图所示:
创建源文件,切换至zker用户;
su - zker
切换至/home/zker/demo_data目录下
cd /home/zker/demo_data
创建源文件
vi users.json
输入如下内容
{"name":"zs","lesson":"Math","score":100}
{"name":"ls","lesson":"Math","score":90}
{"name":"ww","lesson":"Math","score":80}
{"name":"zl","lesson":"Math","score":50}
{"name":"zs","lesson":"Chinese","score":99}
{"name":"ls","lesson":"Chinese","score":98}
{"name":"ww","lesson":"Chinese","score":75}
{"name":"zl","lesson":"Chinese","score":100}
{"name":"zs","lesson":"English","score":95}
{"name":"ls","lesson":"English","score":90}
{"name":"ww","lesson":"English","score":65}
{"name":"zl","lesson":"English","score":92}
如需添加个人信息,Name后的名字替换为自己的
修改完配置文件后,先按esc键,再输入“:wq”后回车,退出文件编辑;
启动Hadoop集群。
start-dfs.sh
start-yarn.sh
jps
将源文件上传至HDFS中
hdfs dfs -mkdir -p /user/zker/
hdfs dfs -put users.json /user/zker/
hdfs dfs -ls /user/zker/
注意:若提示Name node is in safe mode.则需等待一会再次运行上述命令。
1.2 进行统计分析
启动spark-shell
spark-shell
要求查询出相同课程中每个人分数的排名。
Spark SQL提供了临时视图的创建,创建完临时视图后就可以像操作表一样使用SQL语句进行查询了。
// 读取文件
val usersDF=spark.read.json("/user/zker/users.json")
// 创建临时视图
usersDF.createOrReplaceTempView("v_users")
// 统计每门课程成绩排名
spark.sql("select name,lesson,score,rank() over(partition by lesson order by score desc) as rank from v_users order by lesson").show()
如需要添加个人信息:将该处二三条代码v_users 替换,如v_xingminusers
同样,可以查询每门课程的最高分数和平均分数。(如替换了上述v_users,操作同上)
// 查询每门课程最高分数和平均分数
spark.sql("select lesson,max(score),avg(score) from v_users group by lesson").show()
退出spark-shell
// 退出
:quit