聊城网站建设售后服务,wordpress 彩色标签云 插件,网站怎么做关键词排名,火车票网站开发文章目录 一、准备工作1、准备数据文件2、启动Spark Shell 二、加载数据为Dataset1、读文件得数据集 三、给数据集添加元数据信息1、定义学生样例类2、导入隐式转换3、将数据集转换成学生数据集4、对学生数据集进行操作#xff08;1#xff09;显示数据集内容#xff08;21显示数据集内容2打印数据集模式3对数据集进行投影操作4对数据集进行过滤操作5对数据集进行统计操作6对数据集进行排序操作7重命名数据集字段 四、将数据集转为数据帧1、将数据集转为数据帧2、对学生数据帧进行操作1显示数据帧内容2显示数据帧模式信息3对数据帧进行投影操作4对数据帧进行过滤操作5对数据帧进行统计操作6对数据帧进行排序操作7重命名数据帧字段 五、基于数据帧进行SQL查询1、基于数据帧创建临时视图2、使用spark对象执行SQL查询1查询全部表记录2显示数据表结构3对表进行投影操作4对表进行选择操作5对表进行统计操作6对表进行排序操作7重命名数据表字段 一、准备工作
1、准备数据文件
1,郑秀芸,女,20
2,王志峰,男,18
3,陈燕文,女,21
4,郑国栋,男,19
5,肖雨涵,男,20
在/home目录里创建student.txt文件 cd /home vim student.txt 将student.txt上传到HDFS的/student/input目录 hdfs dfs -mkdir -p /student/input hdfs dfs -put student.txt /student/input 2、启动Spark Shell
启动Spark Shell执行命令spark-shell --master spark://master:7077 二、加载数据为Dataset
1、读文件得数据集
调用SparkSession对象的read.textFile()可以读取指定路径中的文件内容并加载为一个Dataset执行命令val ds spark.read.textFile(hdfs://master:9000/student/input/student.txt)
三、给数据集添加元数据信息
1、定义学生样例类
定义一个样例类Student用于存放数据描述信息Schema执行命令case class Student(id: Int, name: String, gender: String, age: Int)
2、导入隐式转换
执行命令import spark.implicits._ _表示implicits包里所有的类类似于Java里的*
3、将数据集转换成学生数据集
执行命令:paste进入粘贴模式然后执行如下命令
val studentDS ds.map(line {val fields line.split(,)val id fields(0).toIntval name fields(1)val gender fields(2)val age fields(3).toIntStudent(id, name, gender, age)}
) 4、对学生数据集进行操作
1显示数据集内容
执行命令studentDS.show
2打印数据集模式
执行命令studentDS.printSchema
3对数据集进行投影操作
显示学生的姓名和年龄字段执行命令studentDS.select(name, age).show 对应的SQL语句select name, age from student
4对数据集进行过滤操作
显示女生记录执行命令studentDS.filter(gender 女).show 显示年龄在[19, 20]之间的记录执行命令val ds1 studentDS.filter(age 19) 两个数据集求交集 可以有更简单的处理方式执行命令studentDS.filter(age 19 and age 20).show
5对数据集进行统计操作
求20岁以上的女生人数 分组统计男女生总年龄执行命令studentDS.groupBy(gender).sum(age).show 分组统计男女生平均年龄执行命令studentDS.groupBy(gender).sum(age).show 分组统计男女生最大年龄执行命令studentDS.groupBy(gender).max(age).show 分组统计男女生最小年龄执行命令studentDS.groupBy(gender).min(age).show
6对数据集进行排序操作
按年龄升序排列执行命令studentDS.sort(age).show() 按年龄降序排列执行命令studentDS.sort(studentDS(age).desc).show 先按性别升序排列再按年龄降序排列执行命令studentDS.sort(studentDS(gender), studentDS(age).desc).show() 对应的SQL语句select * from student order by gender, age desc;
7重命名数据集字段
执行命令studentDS.select(studentDS(id).as(学号), studentDS(name).as(姓名), studentDS(gender).as(性别), studentDS(age).as(年龄)).show
四、将数据集转为数据帧
1、将数据集转为数据帧
将学生数据集转为学生数据帧执行命令val studentDF studentDS.toDF()
2、对学生数据帧进行操作
1显示数据帧内容
显示学生数据帧内容执行命令studentDF.show
2显示数据帧模式信息
打印学生数据帧模式信息执行命令studentDF.printSchema
3对数据帧进行投影操作
显示学生数据帧姓名与年龄字段年龄加1执行命令studentDF.select(studentDF(name), studentDF(age) 1).show
4对数据帧进行过滤操作
查询年龄在19岁以上的记录执行命令studentDF.filter(studentDF(age) 19).show 查询20岁以上的女生记录执行命令studentDF.filter(age 20 and gender 女).show()
5对数据帧进行统计操作
统计学生数据帧总记录数执行命令studentDF.count 分组统计男女生总年龄执行命令studentDF.groupBy(gender).sum(age).show 分组统计男女生平均年龄执行命令studentDF.groupBy(gender).avg(age).show 分组统计男女生最大年龄执行命令studentDF.groupBy(gender).max(age).show 分组统计男女生最小年龄执行命令studentDF.groupBy(gender).min(age).show 分组统计男女生人数执行命令studentDF.groupBy(gender).count.show
6对数据帧进行排序操作
对年龄升序排列执行命令studentDF.sort(age).show 对年龄降序排列执行命令studentDF.sort(studentDF(age).desc).show 先按性别升序再按年龄降序- 执行命令studentDF.sort(studentDF(gender), studentDF(age).desc).show
7重命名数据帧字段
执行命令studentDF.select(studentDF(id).as(学号), studentDF(name).as(姓名), studentDF(gender).as(性别), studentDF(age).as(年龄)).show
五、基于数据帧进行SQL查询
1、基于数据帧创建临时视图
执行命令studentDF.createOrReplaceTempView(student)
2、使用spark对象执行SQL查询
1查询全部表记录
执行命令spark.sql(select * from student).show
2显示数据表结构
执行命令spark.sql(describe student).show
3对表进行投影操作
执行命令spark.sql(select name, age 1 from student).show
4对表进行选择操作
查询年龄在19岁以上的记录执行命令spark.sql(select * from student where age 19).show 查询20岁以上的女生记录执行命令spark.sql(select * from student where age 20 and gender 女).show()
5对表进行统计操作
查询学生表总记录数执行命令spark.sql(select count(*) count from student).show 分组统计男女生总年龄执行命令spark.sql(select gender, sum(age) from student group by gender).show 分组统计男女生平均年龄执行命令spark.sql(select gender, avg(age) from student group by gender).show 分组统计男女生最大年龄执行命令spark.sql(select gender, max(age) from student group by gender).show 分组统计男女生最小年龄执行命令spark.sql(select gender, min(age) from student group by gender).show 分组统计男女生人数执行命令spark.sql(select gender, count(*) count from student group by gender).show
6对表进行排序操作
按年龄升序排列执行命令spark.sql(select * from student order by age).show 按年龄降序排列执行命令spark.sql(select * from student order by age desc).show 先按性别升序再按年龄降序执行命令spark.sql(select * from student order by gender asc, age desc).show
7重命名数据表字段
执行命令spark.sql(select id stu_id, name stu_name, gender stu_gender, age stu_age from student).show()