Spark 原理_总结介绍_案例编写 | 学习笔记

简介: 快速学习 Spark 原理_总结介绍_案例编写

开发者学堂课程【大数据 Spark 2020版(知识精讲与实战演练)第三阶段Spark 原理_总结介绍_案例编写】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/689/detail/12005


Spark 原理_总结介绍_案例编写


编写 word count作为案例,原因有二。通过案例学习 spark 原理,要将目标放在原理上,使得案例尽可能简单,且案例中的算子要丰富。重新编写 word count 案例,基于 spark 原理始终,包括 RDD 的生成和执行,物理都基于案例进行,所以复习 word count 很有必要。

进入笔记,案例如下图:

image.png

打开 idea,创建 Scala class,命名为 sourceanalysis,命名方法 test,定义为 Word count,进行编写。

步骤如下:

1.   创建 sc 对象

创建 conf 对象,new sparkconf().设置两个参数,

valconf=newSparkConf().setMaster("local[6]").setAppName("wordcount source")

val sc=new SparkContext(conf)

2.创建数据集

命名为 test,通过 sc 生成 RDD,接受字符串,

val textRDD=sc.parallelize(Seq("hadoop spark", "hadoop flume", "spark sqoop"))

3、数据处理  

步骤如下:

拆词。一句话拆成单词,一个字符串要拆成多个词,多个单词是一个数组,使用 flatmap 展开,对于 item 进行splititem 可以换成下划线,这是Scala的语法,命名为 splitRDD

val splitRDD =textRDD.flatMap(_.split(regex=""))

赋予初始词频。将 splitRDD 每个单词转化为单词对应

一的形式,使用 splitRDD,生成词频。指定对象名字,命名为 tupleRDD,为原组的意思。

splitRDD.map((_1))

聚合统计词频。使用 curr+agg,简写为_+_,第一个_

代表 curr,第二个_代表 agg,当_在函数简写形式中出现两次,代表两个参数,而不是同一个参数的两次,生成的RDD reduceRDD

val reduceRDD=tupleRDD.reduceByKey(_+_)

4.将结果转为字符串  额外要求,要看到字符串需要进行转换。

reduceRDD 转化成字符串,map 接受了一个参数,生成字符串,加一个 s,生成 s 字符串,使用$_+_.1意为取唯一的参数当中的第一个参数,而此时不适合使用_,原因是后面的_2,指代第二个参数却没有参数,所以选择传统方式,(item>),转成字符串加s,两个部分。

字符串生成后,第一位是 k,第二位是 value。取名为 strRDD

val strRDD =reduceRDD.map( item => s"${item._1}${item._2}")

5. 结果获取。

使用 strRDD,进行结果获取,item 转为_形式,

strRDD.collect().foreach(println(_))

6. 关闭 sc,执行。

Sc.stop()

运行代码,结果如下:

image.png

从第一项开始取,结果正确。

字符串的生成是相对应的,从reduce的第一项开始取,只第二项的 value,即为词频,

在一个简写形式当中,出现了两个下划线,指代的不是同一个参数的两次出现,而是两个参数。因此此函数中无法使用下划线,无法只取一个函数。

相关文章
|
6月前
|
移动开发 分布式计算 Spark
Spark的几种去重的原理分析
Spark的几种去重的原理分析
118 0
|
6月前
|
机器学习/深度学习 SQL 分布式计算
Spark核心原理与应用场景解析:面试经验与必备知识点解析
本文深入探讨Spark核心原理(RDD、DAG、内存计算、容错机制)和生态系统(Spark SQL、MLlib、Streaming),并分析其在大规模数据处理、机器学习及实时流处理中的应用。通过代码示例展示DataFrame操作,帮助读者准备面试,同时强调结合个人经验、行业趋势和技术发展以展现全面的技术实力。
513 0
|
1月前
|
分布式计算 大数据 Java
大数据-87 Spark 集群 案例学习 Spark Scala 案例 手写计算圆周率、计算共同好友
大数据-87 Spark 集群 案例学习 Spark Scala 案例 手写计算圆周率、计算共同好友
48 5
|
1月前
|
分布式计算 关系型数据库 MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
47 3
|
1月前
|
存储 分布式计算 算法
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
58 0
|
1月前
|
分布式计算 大数据 Spark
大数据-95 Spark 集群 SparkSQL Action与Transformation操作 详细解释与测试案例(二)
大数据-95 Spark 集群 SparkSQL Action与Transformation操作 详细解释与测试案例(二)
38 1
|
1月前
|
分布式计算 Java 大数据
大数据-92 Spark 集群 SparkRDD 原理 Standalone详解 ShuffleV1V2详解 RDD编程优化
大数据-92 Spark 集群 SparkRDD 原理 Standalone详解 ShuffleV1V2详解 RDD编程优化
35 0
大数据-92 Spark 集群 SparkRDD 原理 Standalone详解 ShuffleV1V2详解 RDD编程优化
|
24天前
|
设计模式 数据采集 分布式计算
企业spark案例 —出租车轨迹分析
企业spark案例 —出租车轨迹分析
54 0
|
1月前
|
消息中间件 分布式计算 Kafka
大数据-102 Spark Streaming Kafka ReceiveApproach DirectApproach 附带Producer、DStream代码案例
大数据-102 Spark Streaming Kafka ReceiveApproach DirectApproach 附带Producer、DStream代码案例
55 0
|
1月前
|
SQL 分布式计算 大数据
大数据-101 Spark Streaming DStream转换 窗口操作状态 跟踪操作 附带多个案例(一)
大数据-101 Spark Streaming DStream转换 窗口操作状态 跟踪操作 附带多个案例(一)
29 0