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

这篇具有很好参考价值的文章主要介绍了《Spark大数据技术与应用》肖芳 张良均著——课后习题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


教材

《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

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


数组

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

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

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

《Spark大数据技术与应用》肖芳 张良均著——课后习题如果需要合并两个列表,可以使用”:::”三个冒号表示。

基本操作方法

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

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


匿名函数

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

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

如果函数的每个参数在函数中最多出现一次,则可以使用占位符“_”代替参数。 可以把这里的占位符当作需要填入的空白,也就是上一条的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)

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

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

过滤函数。

scala> val num:List[Int] = List(1,2,3,4)

scala> num.filter(x => x % 2 == 0)

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

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

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

flatMap

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

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

groupBy

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

scala> val num = List(1,2,3,4,5,6,7,8,9,10)

scala> num.groupBy(x => x % 2 == 0)

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


课后习题

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

  • 编程题

    水仙花数是指其个位、十位、百位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大数据技术与应用》肖芳 张良均著——课后习题


第三章 Spark编程

RDD的创建与使用

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

创建:makeRDD

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

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

统计性别为“男”的用户

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

//分开处理
val rdd = sc.textFile("file:///opt/test.txt")

rdd.collect // 在考试时可写,可不写

val rdd2 = rdd.map(_.split(",")).filter(_.contains("男"))

rdd2.count

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


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

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

实训2

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

//分开处理
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路径")

选择题

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

编程题

地名次数

```scala
//分开处理
val rdd = sc.textFile("file:///opt/users.csv")

val rdd2 = rdd.map(_.split(",")).map(x => (x(1), 1))

rdd2.reduceByKey(_+_).collect
```

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

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

将结果保存……
《Spark大数据技术与应用》肖芳 张良均著——课后习题


第四章 Spark编程进阶

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


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

基本的MySQL命令操作

DataFrame查询操作两种方式

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

课后习题

选择题

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

操作题

用户播放歌曲次数
《Spark大数据技术与应用》肖芳 张良均著——课后习题

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:实时计算框架

课后习题
《Spark大数据技术与应用》肖芳 张良均著——课后习题
《Spark大数据技术与应用》肖芳 张良均著——课后习题《Spark大数据技术与应用》肖芳 张良均著——课后习题文章来源地址https://www.toymoban.com/news/detail-455147.html

到了这里,关于《Spark大数据技术与应用》肖芳 张良均著——课后习题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 云计算技术(ICT)课后习题答案

    一.选择题 “云计算”名称中的“云”,其渊源来源于以下哪种说法? A. 云计算某些方面向云一样不可捉摸 B. 云计算的支撑技术互联网常以一个云状图案来表示,因此提供资源的网络常被成为“云”。 C. 云计算的规模一般像云一样广阔 D. 用户无法看到云计算中包含的资源

    2024年02月03日
    浏览(49)
  • 司守奎《数学建模算法与应用》课后习题:线性规划

    1.1、常规求解线性规划 1.2、带有绝对值的线性规划求解 1.3、单下标求解生产利润问题 1.4 、双下标求解利润问题 最后给出一些基础帮助的链接: 需要注意三个问题: 1)分清哪些是列向量,哪些是行向量; 2)如“-2x1+x3”中的x2系数为0,但是不能忽略; 3)MATLAB 默认求最小

    2024年02月05日
    浏览(89)
  • 软件测试技术 第四章 白盒测试 课后习题参考答案 - 杨胜利

    1.什么是白盒测试? 白盒测试技术是一种常用的软件测试方法,不仅软件测试人员需要掌握,开发人员也需要在开发时用此方法测试自己开发的程序; 白盒测试是一种从开发人员角度出发的测试,主要以程序的源代码为依据,对程序的内部逻辑结构进行测试,故又称“结构测

    2024年02月05日
    浏览(45)
  • 大数据应用技术测试习题

    A. 实时 B. 内存计算 C. 海量处理 D. 批处理 答案:A 解析:Impala是由Cloudera开发的一个开源并行处理查询工具,它能够在Apache Hadoop上进行实时查询分析。使用Impala,用户可以执行低延迟的SQL查询直接在Hadoop中,而不需要将数据传送到其他系统或使用MapReduce。此外,Impala也支持在

    2024年02月10日
    浏览(34)
  • 51单片机原理及应用张毅刚版课后习题以及答案

    ①8位微处理器CPU ②数据存储器 128B RAM ③程序存储器 ④4个8位可编程并行I/O口 ⑤1个全双工的异步串行口 ⑥2个可编程的16位定时器/计数器 ⑦1个看门狗定时器WDT ⑧中断系统具有五个中断源 五个中断向量 ⑨特殊功能寄存器SFR 26个 ⑩ 低功耗节电模式有空闲模式和掉电保持模式

    2024年01月24日
    浏览(53)
  • 单片机原理及接口技术(C51微课第3版)张毅刚课后习题答案

    教材:单片机与原理及接口技术(C51编程)(微课版第3版) 主编:张毅刚 副主编:刘连胜  崔秀海 出版社:人民邮电出版社  下载地址:https://pan.baidu.com/s/1uqT7hfcx7UJGBC_jjDfNzg?pwd=720h  提取码:720h (这个不全) 链接:https://pan.baidu.com/s/1QbckwwJxeKpB477pJihyZQ?pwd=mp57  提取码:m

    2024年02月01日
    浏览(57)
  • 数据挖掘1——课后习题

    1.3 定义以下数据挖掘功能:特征化、区分、关联和相关性分析、分类、回归、聚类、离群点分析。使用你熟悉的现实生活中的数据库,给出每种数据挖掘功能的例子。 特征化 是目标类数据的一般特性或者特征的汇总。例如可以通过收集销量在前10%的物品的信息,再进行特征

    2024年02月10日
    浏览(33)
  • 大数据与云计算课后习题

    参考: https://blog.csdn.net/weixin_44986776/article/details/114855025 https://www.pianshen.com/article/33741007662/ 以及古老师ppt 第一章 请举例说明结构化数据、半结构化数据、非结构化数据的区别。 结构化数据指的是数据在一个记录文件里面以固定格式存在的数据。结构化数据可以通过固有键值

    2023年04月08日
    浏览(36)
  • 《数据库系统概论》王珊版课后习题

    1.数据、数据库、数据库管理系统、数据库系统的概念 (1)数据(Data):数据是数据库中存储的基本对象, 是描述事物的符号记录 。数据有多种表现形式,它们都可以经过数字化后存入计算机。数据的种类有数字、文字、图形、图像、声音、正文等。 (2)数据库(DB):

    2024年02月07日
    浏览(51)
  • 数据结构(Data Structure)(C/C++)PTA习题+课后习题

    课本:《数据结构——从概念到c++实现(第三版)》 1-1 数据元素是数据的最小单位。 F         课本:数据元素是数据的基本单位;构成数据元素的最小单位称为数据项,数 据元素是讨论数据结构时涉及的最小数据单 位,数据结构是指相互之间存在一定关系的数据元素

    2024年02月04日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包