《Spark大数据技术与应用》肖芳 张良均著——课后习题

article/2025/9/15 10:04:14

目录

  • 教材
  • 知识汇总+课后习题
    • 第一章 Spark概述
      • Spark的特点
      • Spark生态圈
      • Spark应用场景
    • `第二章 Scala基础`
    • `匿名函数`
    • Set
    • Map
    • `map`
    • `flatMap`
    • `groupBy`
      • 课后习题
    • 第三章 Spark编程
    • `教材52页任务3.2及之后的任务` 重点复习
    • `sortBy排序`
    • `collect查询`
    • `distinct去重`
    • zip
    • `实训题`
      • 实训1
      • 实训2
      • 选择题
      • 编程题
    • 第四章 Spark编程进阶
    • 第五章 Spark SQL:结构化数据文件处理
    • 课后习题
      • 选择题
      • 操作题
    • 第六章 Spark Streaming:实时计算框架


教材

《Spark大数据技术与应用》肖芳 张良均著


知识汇总+课后习题

第一章 Spark概述

Spark的特点

  1. 快速
  2. 易用
  3. 通用
  4. 随处运行
  5. 代码简洁

Spark生态圈

  1. Spark Core 提供底层框架和核心支持
  2. BlinkDB 用于海量数据上运行交互式SQL查询的大规模并行查询引擎
  3. Spark SQL
  4. Spark Streaming 流式计算
  5. MLBase
  6. MLlib 数据挖掘算法库
  7. GraphX 图计算
  8. Spark R

Spark应用场景

  1. 腾讯
  2. Yahoo
  3. 淘宝
  4. 优酷土豆

第二章 Scala基础

Scala的特性

  1. 面向对象
  2. 函数式编程
  3. 静态类型
  4. Scala是可扩展的

val是常量

val name:type = initialization

var是变量

var name:type = initialization

运算符
在这里插入图片描述
在这里插入图片描述


数组

var z:Array[String] = new Array[String](num)var z=Array(元素1, 元素2, ……)

Scala列表与数组非常相似,列表的所有元素都具有相同的类型。

与数组不同的是列表不可变,也就是说列表内的元素不能通过赋值来更改。

在这里插入图片描述如果需要合并两个列表,可以使用”:::”三个冒号表示。

基本操作方法

基本操作描述
arr.length返回数组的长度
arr.head查看数组的第一个元素
arr.tail查看数组中除了第一个元素外的其他元素
arr.isEmpty判断数组是否为空
arr.contains(x)判断数组是否包含元素x

在这里插入图片描述


匿名函数

匿名函数是使用箭头”⇒”定义的,头的左边是参数列表,箭头右边是表达式,表达式产生函数的结果。

但在考试中也许是这样使用。

如果函数的每个参数在函数中最多出现一次,则可以使用占位符“_”代替参数。 可以把这里的占位符当作需要填入的空白,也就是上一条的x和y。

scala> (x:Int, y:Int)=>x+y
scala> val addInt = (x:Int, y:Int) => x+y
scala> val addInt = (_:Int) + (_:Int)

Set

没有重复对象的集合

scala> val set:Set[Int]=Set(参数1, 参数2, ……)

Map

映射是一种可迭代的键值对结构,所有值都可以通过键来获取,并且Map中的键都是唯一的。

scala> val person:Map[String, Int]=Map("John"->21, "Betty"->20)

关键点在函数组合器

函数描述
map(func)对RDD数据集中的每个元素都使用func,返回一个新的RDD
filter(func)对RDD数据集中的每个元素都是用func,返回func为true的元素构成RDD
flatMap(func)和map类似,但是flatMap生成的是多个结果
union(otherDataset)返回一个新的dataset,包含源dataset和给定的dataset的元素的集合
groupByKey(func)返回(K, Seq[V]),根据相同的键分组
reduceByKey(func, [num Taskk])用一个给定的func作用在groupByKey而产生的(K, Seq[V]),比如求和

map

通过一个函数重新计算列表中的所有元素,并且返回一个相同数目元素的新列表。直接看样例:

scala> val num = List(1,2,3,4,5)scala> num.map(x => x * x)

在这里插入图片描述

这里使用到了匿名函数,代码解释为:常量val列表内的信息,将其进行匿名函数处理,它原先的值相乘。也就是说,11,22,3*3……。这里只是初级使用,一定要先了解这一步!考试的时候一定会有题目考到要使用map的情况!

过滤函数。

scala> val num:List[Int] = List(1,2,3,4)scala> num.filter(x => x % 2 == 0)

在这里插入图片描述

其使用方法相当于if条件判断,只不过将其变得更为简洁。当然使用起来还可以结合map。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Qs9Q2p1q-1671328987871)(Manage%20Self%20b6439b2383b64d689578e2730484a1a4/%E8%87%AA%E4%B9%A0%E5%AE%A4%E9%A2%84%E5%AE%9A%E7%B3%BB%E7%BB%9F%203c883dc3f540469785e331bd6ea62ac0/Untitled%20Database%20f6e88f7c61c84039a91b316368760414/%E5%AF%92%E5%81%87%E6%9C%9F%E6%97%A5%E7%A8%8B%E8%A7%84%E5%88%92%208c7d608d795a4843ae5923a5fbf45056/Untitled%20Database%20e32797b427e542edb000b09d8747fbf4/Spark%E6%80%BB%E5%A4%8D%E4%B9%A0%204472c67e80534cb794a4e0d89344d46e/Untitled%202.png)]

flatMap

将多维数组或列表进行扁平化。

在这里插入图片描述

groupBy

分组聚合,得到的结果是Map类型。

scala> val num = List(1,2,3,4,5,6,7,8,9,10)scala> num.groupBy(x => x % 2 == 0)

在这里插入图片描述


课后习题

  • 选择题
    在这里插入图片描述
    在这里插入图片描述

  • 编程题

    水仙花数是指其个位、十位、百位3个数的立方和等于这个数本身,请用Scala变成求出所有水仙花数。

    for (n <- 100 to 999){val b = n / 100    // 百位val s = n % 100 / 10    // 十位val g = n % 100 % 10    // 个位if (b * b * b + s * s * s + g * g * g == n){println(n);}
    }
    

在这里插入图片描述


第三章 Spark编程

RDD的创建与使用

RDD是一种容错的、只读的、可进行并行操作的数据结构

创建:makeRDD

在这里插入图片描述

CSV文件的读取也可以这样读,不用按照书上描述的写。

从HDFS创建RDD

// HDFS下的文件
val file = sc.textFile("hdfs://主机名:9000/文件目录")// Linux下的文件
val file = sc.textFile("file:///文件目录")

文件的存储

rdd名称.saveAsSequenceFile("保存路径")// 或rdd名称.saveAsTextFile("保存路径")

教材52页任务3.2及之后的任务 重点复习

sortBy排序

  • 参数1,左边是要被排序对象中的每一个元素,右边返回的值是元素中要进行排序的值
  • 参数2,默认为true(升序),false(降序)
  • 参数3,排序后的分区个数

collect查询

distinct去重

zip

将两个RDD组合成Key / Value形式,这两个RDD的partition数量以及与元素数量必须都相同。


简单的集合操作

方法描述简述
intersection( )参数是RDD,求出两个RDD的共同元素交集
union( )参数是RDD,合并两个集合的所有元素并集
subtract( )参数是RDD,将原RDD和参数RDD的相同元素去掉补集
cartesian( )参数是RDD,求两个RDD的笛卡尔积笛卡尔积

实训题

实训1

统计性别为“男”的用户

在这里插入图片描述

//分开处理
val rdd = sc.textFile("file:///opt/test.txt")rdd.collect // 在考试时可写,可不写val rdd2 = rdd.map(_.split(",")).filter(_.contains("男"))rdd2.count

在这里插入图片描述


// 统合处理
sc.textFile("file:///opt/test.txt").map(_.split(",")).filter(_.contains("男")).count

在这里插入图片描述

实训2

单词计数
在这里插入图片描述

//分开处理
val rdd = sc.textFile("file:///opt/words.txt")rdd.collect // 在考试时可写,可不写val rdd2 = rdd.flatMap(_.split("\\w+")).map((_, 1)).reduceByKey(_+_, 1)val rdd3 = rdd2.filter(_._2 > 3)rdd3.saveAsSequenceFile("HDFS路径")

// 统合处理
sc.textFile("file:///opt/words.txt").flatMap(_.split("\\w+")).map((_, 1)).reduceByKey(_+_, 1).filter(_._2 > 3).saveAsSequenceFile("HDFS路径")

选择题

在这里插入图片描述
在这里插入图片描述

编程题

地名次数```scala
//分开处理
val rdd = sc.textFile("file:///opt/users.csv")val rdd2 = rdd.map(_.split(",")).map(x => (x(1), 1))rdd2.reduceByKey(_+_).collect
```

在这里插入图片描述

 //统合处理sc.textFile("file:///opt/users.csv").map(_.split(",")).map(x => (x(1), 1)).reduceByKey(_+_).collect

将结果保存……
在这里插入图片描述


第四章 Spark编程进阶

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


第五章 Spark SQL:结构化数据文件处理

基本的MySQL命令操作

DataFrame查询操作两种方式

  1. 将DataFrame注册称为临时表,然后通过SQL语句进行查询
  2. 直接在DataFrame对象上进行查询。

课后习题

选择题

在这里插入图片描述
在这里插入图片描述

操作题

用户播放歌曲次数
在这里插入图片描述

case class userList(userid:Int, artistid:Int, count:Int)  // 创建用例类val user_artist_data = sc.textFile("file:///opt/user_artist_data.txt").map{x => val y = x.split(" "); userList(y(0).toInt, y(1).toInt, y(2).toInt)}.toDF();user_artist_data.createOrReplaceTempView("user_artist")spark.sql("select userid, count(distinct artistid) from user_artist group by userid").show()spark.sql("select artistid, count from user_artist where userid=1000002 oder by count desc limit 10").show()

第六章 Spark Streaming:实时计算框架

课后习题
在这里插入图片描述
在这里插入图片描述在这里插入图片描述


http://chatgpt.dhexx.cn/article/RrgLJT2t.shtml

相关文章

Spark大数据技术与应用 第一章Spark简介与运行原理

Spark大数据技术与应用 第一章Spark简介与运行原理 1.Spark是2009年由马泰扎哈里亚在美国加州大学伯克利分校的AMPLab实验室开发的子项目&#xff0c;经过开源后捐赠给Aspache软件基金会&#xff0c;成为了Apache Spark。由Scala语言实现的专门为大规模数据处理而设计的快速通用…

大数据之Spark:Spark 基础

目录 1、Spark 发展史2、Spark 为什么会流行3、Spark 特点4、Spark 运行模式 1、Spark 发展史 2009 年诞生于美国加州大学伯克利分校 AMP 实验室&#xff1b; 2014 年 2 月&#xff0c;Spark 成为 Apache 的顶级项目&#xff1b; Spark 成功构建起了一体化、多元化的大数据处…

大数据之spark详解

目录 什么是spark&#xff1a; 功能历史上和hadoop的区别&#xff1a; spark的五大核心模块&#xff1a; ➢ Spark Core 什么是spark&#xff1a; 简单一点Spark 是一种基于内存的快速、通用、可扩展的大数据分析计算引擎。属于mapreduce的加强版本&#xff0c;结合了其优点…

09.大数据技术之Spark

文章目录 一、Spark概述1、概述2、Spark特点 二、Spark角色介绍及运行模式1、集群角色2、运行模式 三、Spark集群安装1.Local模式1.下载文件2.解压缩3、修改配置文件4.配置环境变量5.启动服务6.启动客户端 2.Standalone模式1.停止服务2.修改配置文件spark-env.sh3.修改配置文件…

大数据框架之Spark详解

目录 1 Spark概述1.1 Spark是什么&#xff1f;1.2 Spark内置模块1.3 Spark 特点 2 RDD概述2.1 什么是RDD&#xff1f;2.2 RDD的属性2.3 RDD特点2.4 弹性体现在哪&#xff1f;2.5 分区2.6 分区2.7 依赖2.8 缓存2.9 CheckPoint 1 Spark概述 1.1 Spark是什么&#xff1f; Spark是…

大数据学习 之 Spark 概述

文章目录 一、Spark简介Spark与Hadoop的区别部署模式 二、 Spark架构1.Driver2.Executor3.Master & Worker4.Cluster manager5.ApplicationMaster补充点&#xff1a;Stage执行过程 三、Shuffle机制shuffle介绍Shuffle的影响导致Shuffle的操作 四、RDD&#xff08;弹性分布式…

大数据技术---Spark

一、Spark简介 1、Spark概述 Spark&#xff1a;由美国加州伯克利大学的AMP实验室于2009年开发&#xff0c;基于内存计算的大数据并行计算框架&#xff0c;可用于构建大型的、低延迟的数据分析应用程序。 三大分布式计算系统开源项目&#xff1a;Hadoop、Spark、Storm。 Spark的…

KB、MB、GB等和KiB、MiB、GiB等的区别

今天装系统RHEL7.7&#xff0c;在分区时发现单位变成MiB、GiB了&#xff0c;有点奇怪就查了查。 区别&#xff1a; KB、MB、GB等单位以10为底数的指数 KiB、MiB、GiB等单位是以2为底数的指数 如&#xff1a;1KB10^31000, 1MB10^610000001000KB,1GB10^910000000001000MB,而 …

asset size limit: The following asset(s) exceed the recommended size limit (244 KiB).

webpack打包提示文件体积过大导致&#xff1a; The following asset(s) exceed the recommended size limit (244 KiB). This can impact web performance. entrypoint size limit: The following entrypoint(s) combined asset size exceeds the recommended limit (244 Ki…

当git clone遇到client_loop:send disconnect: Connection reset by peer00 Kib/s

当git clone遇到client_loop:send disconnect: Connection reset by peer00 Kib/s 1. 问题描述2.问题解决3.原因分析 1. 问题描述 刚换了新电脑&#xff0c;重新配置了下git仓库的ssh后&#xff0c;迫不及待想 git clone 先项目。发现遇到个问题&#xff1a; 在执行 git clone…

Kibana

Kibana是一个开源的分析和可视化平台&#xff0c;设计用于和Elasticsearch一起工作。 你用Kibana来搜索&#xff0c;查看&#xff0c;并和存储在Elasticsearch索引中的数据进行交互。 你可以轻松地执行高级数据分析&#xff0c;并且以各种图标、表格和地图的形式可视化数据。…

WARNING in asset size limit: The following asset(s) exceed the recommended size limit (244 KiB)

Taro打包h5体积限制 警告&#xff1a; WARNING in asset size limit: The following asset(s) exceed the recommended size limit (244 KiB). 可以使用webpack-bundle-analyzer插件对打包体积进行分析&#xff0c;参考代码&#xff1a; webpackChain (chain) {chain.plug…

【名词解释】KiB和KB,MiB和MB,GiB和GB 等的区别以及1M带宽到底是多少?

目录 1. KiB和KB&#xff0c;MiB和MB&#xff0c;GiB和GB 2. 宽带速度 3. 单位换算 1. KiB和KB&#xff0c;MiB和MB&#xff0c;GiB和GB KiB和KB&#xff0c;MiB和MB&#xff0c;GiB和GB 等的区别: 1KB(kilobyte)10^31000byte, 1KiB(kibibyte)2^101024byte …

b、B、KB、Kib、MB、MiB、GB、GiB、TB、TiB的区别

1024这个数字&#xff0c;想必计算机行业从业人员应该不会陌生&#xff0c;甚至10月24日还被当做程序员日&#xff0c;如果你问一个程序员1GB等于多少MB,他大概率会不假思索回答:1024。 没错&#xff0c;对于稍微对计算机或者网络有了解的人&#xff0c;一般都认为1024是数据容…

KB和KiB的区别是什么?

KB和KiB的区别是什么? 文章目录 KB和KiB的区别是什么?前言MB与MiB的区别&#xff1a;KB和KiB的区别为什么买到的硬盘容量总是会少一些&#xff1f; 前言 今天整理资料时发现使用windows自带的资源管理器查看文件夹大小时计算很缓慢, 机智的我想到了使用dir命令来查看 哈哈~…

KiB是什么单位

kiB1024byte kb1000byte

linux必备软件合集

Ubuntu常用软件合集 我用的使Ubuntu-Kylin14.04,原因呢主要是觉得使本土化的&#xff0c;自带了日历、输入法、优客助手等易于上手的应用。也省的每次安装完原生的系统再麻烦的安装,但是这些软件并不仅仅局限于ubuntu14.04 美化篇 刚装上ubuntu&#xff0c;看起来很朴素&…

软件测试周刊(第82期):其实所有纠结做选择的人心里早就有了答案,咨询只是想得到内心所倾向的选择。

欢迎来到第 82 期&#xff01;这里记录过去一周我们看到的软件测试及周边的行业动态&#xff0c;周五发布。 本期看点&#xff1a;B站是如何建设移动真机测试集群的&#xff1f;百人测试团队的测试效能体系应该如何建设&#xff1f;闲鱼交易链路自动化回归测试是怎么做的&#…

傻瓜式安装stable diffusion图像生成软件

目录 1、打开&#xff1a;https://colab.research.google.com/ 2、复制一下代码&#xff1a; 3、粘贴到下方&#xff0c;按运行按钮。 4、打开安装好的软件。上框复制以下代码&#xff1a; 5、下框复制以下代码&#xff1a; 6、如下图设置及操作&#xff1a; 1、打开&#…

html如何用mp4做背景音乐,如何用相片制作mv配上流行mp3背景音乐 打造自己的mv

准备好自己的相片&#xff0c;支持的相片(图片)格式为office powerpoint支持的就可以。具体支持什么相片格式&#xff0c;如何用相片制作mv再配上背景音乐呢&#xff1b;整个操作步骤是很简单的&#xff0c;如果是刚开始学习并对相关制作不太了解的朋友可能要多认真花点时间了解…