0


spark期末整理复习

第二章:Scala基础

一.map()方法

map()方法可通过一个函数重新计算列表中的所有元素,并且返回一个包含相同数目元素的新列表。例如,定义一个Int类型列表,列表中的元素为 1~5,使用 map()方法对列表中的元素进行平方计算。

二.foreach()方法

foreach()方法和 map()方法类似,但是foreach()方法没有返回值,只用于对参数的失进行输出。

三.filter()方法

使用 filter()方法可以移除传入函数的返回值为 false 的元素。

四.flatten()方法

flatten()方法可以将嵌套的结构展开,即 flatten()方法可以将一个二維的列表展开成一个一维的列表。定义一个二维列表list,通过 flatten()方法可以将 list 展开为一维列表。

五.flatMap()方法

flatMap()方法结合了 map()方法和 flatten()方法的功能,接收一个可以处理嵌套列表的函数,再对返回结果进行连接。

六.groupBy()方法

groupBy ()方法可对集合中的元素进行分组操作,返回的结果是一个映射。对 1~10根据奇偶性进行分组,因此 groupBy ()方法传入的参数是一个计算偶数的函数,得到的结果是一个映射,包含两个键值对,键为 false 对应的值为奇数列表,键为true对应的值为偶数列表。

第三章:Spark编程基础——RDD方法

一.map()方法转换数据

map()方法是一种基础的RDD转换操作,可以对RDD中的每一个数据元素通过某种函数进行转换并返回新的RDD。map()方法是转换操作,不会立即进行计算。
转换操作是创建RDD的第二种方法,通过转换已有RDD生成新的RDD。因为RDD是一个不可变的集合,所以如果对RDD数据进行了某种转换,那么会生成一个新的RDD。

二.SortBy()方法进行排序

sortBy()方法用于对标准RDD进行排序,有3个可输入参数,说明如下。
第1个参数是一个函数f:(T) => K,左边是要被排序对象中的每一个元素,右边返回的值是元素中要进行排序的值。
第2个参数是ascending,决定排序后RDD中的元素是升序的还是降序的,默认是true,即升序排序,如果需要降序排序那么需要将参数的值设置为false。
第3个参数是numPartitions,决定排序后的RDD的分区个数,默认排序后的分区个数和排序之前的分区个数相等,即this.partitions.size。
第一个参数是必须输入的,而后面的两个参数可以不输入。

三.collect()方法查询数据

collect()方法是一种行动操作,可以将RDD中所有元素转换成数组并返回到Driver端,适用于返回处理后的少量数据。
因为需要从集群各个节点收集数据到本地,经过网络传输,并且加载到Driver内存中,所以如果数据量比较大,会给网络传输造成很大的压力。
因此,数据量较大时,尽量不使用collect()方法,否则可能导致Driver端出现内存溢出问题。

四.flatMap()方法转换数据

flatMap()方法将函数参数应用于RDD之中的每一个元素,将返回的迭代器(如数组、列表等)中的所有元素构成新的RDD。
使用flatMap()方法时先进行map(映射)再进行flat(扁平化)操作,数据会先经过跟map一样的操作,为每一条输入返回一个迭代器(可迭代的数据类型),然后将所得到的不同级别的迭代器中的元素全部当成同级别的元素,返回一个元素级别全部相同的RDD。
这个转换操作通常用来切分单词。

五.take()方法查询某几个值

take(N)方法用于获取RDD的前N个元素,返回数据为数组。

take()与collect()方法的原理相似,collect()方法用于获取全部数据,take()方法获取指定个数的数据。

六.union()方法合并多个RDD

union()方法是一种转换操作,用于将两个RDD合并成一个,不进行去重操作,而且两个RDD中每个元素中的值的个数、数据类型需要保持一致。

使用union()方法合并两个RDD。

七.filter()方法进行过滤

filter()方法是一种转换操作,用于过滤RDD中的元素。
filter()方法需要一个参数,这个参数是一个用于过滤的函数,该函数的返回值为Boolean类型。
filter()方法将返回值为true的元素保留,将返回值为false的元素过滤掉,最后返回一个存储符合过滤条件的所有元素的新RDD。

八.distinct()方法进行去重

distinct()方法是一种转换操作,用于RDD的数据去重,去除两个完全相同的元素,没有参数。

九.intersection()方法

intersection()方法用于求出两个RDD的共同元素,即找出两个RDD的交集,参数是另一个RDD,先后顺序与结果无关。

十.subtract()方法

subtract()方法用于将前一个RDD中在后一个RDD出现的元素删除,可以认为是求补集的操作,返回值为前一个RDD去除与后一个RDD相同元素后的剩余值所组成的新的RDD。两个RDD的顺序会影响结果。
创建两个RDD,分别为rdd1和rdd2,包含相同元素和不同元素,通过subtract()方法求rdd1和rdd2彼此的补集。

十一.cartesian()方法

cartesian()方法可将两个集合的元素两两组合成一组,即求笛卡儿积。

第四章:Spark编程进阶

用本地模式将开发环境(IDEA)的代码文件打jar包到我们的集群环境下运行。

一.用IDEA自带的打包方式

点击 File ==> Project Structure ==> Artifacts ==> 点击加号 ==> 选择JAR ==> 选择From modules with dependencies。

1.先选择你要打包的模块和启动类,然后选择extract to the target JAR ,点击OK。

2.确认要生成的 jar 名称(默认是项目或模块名),确认 jar 包的输出的目录,确认最终输出的 jar 里包含的依赖,点击 Apply 和 OK。

3 . 点击 Build ==> Build Artifacts。在弹出的窗体中选择word==>Build。

4.构建打包提示成功后就可以在输出目录里找到打好的 jar 包了。

二. 用maven 项目中的插件来打包

1.首先创建我们的maven项目。

2.然后再配置我们的pom.xml文件 。


3.设置中将我们的maven路径添加到我们的构建工具中。

4.在我们的项目结构库中添加我们的spark与Scala,路径选择我们的Scala根目录,spark的jar目录。

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

一.DataFrame简介

DataFrame可以看作是分布式的Row对象的集合,在二维表数据集的每一列都带有名称和类型,这就是Schema元信息,这使得Spark框架可获取更多数据结构信息,从而对在DataFrame背后的数据源以及作用于DataFrame之上数据变换进行针对性的优化,最终达到提升计算效率。

47f3f4fdfd7342a9bb01b2eeb361002a.png

二.DataFrame的创建

数据准备

049fab733a4246168156e58d3ac69d77.png

创建DataFrame的两种基本方式:

1.已存在的RDD调用toDF()方法转换得到DataFrame。

c5fa17a01fd440c59883abbaf569a4b6.png

2.通过Spark读取数据源直接创建DataFrame。

a98b6eb03321467bb556923e124e6226.png

三.DataFrame****的常用操作

1.select实现对列名进行重命名

85772fcd1ce64e95a5049970446b1359.png

2.selectExpr()方法指定字段特殊处理

2adb92af40384d4fb5ba9a1265868f5a.png

bee04b1ea34545bbb4622b613600935f.png

388c0740826e470dadc9ee918c8f4c1a.png

3.filter()/where条件查询

72bfbbf40ab44d5188597fca0c4586b5.png

4.groupBy()对数据进行分组

c8f5b6076e714054bb61f86bdc0b2baf.png

5.sort()/orderBy():对特定字段进行排序 desc:降序;asc:升序

ac79097ca5ed4ab0a7cdfd3f4b347db5.png


本文转载自: https://blog.csdn.net/2301_80956142/article/details/138574084
版权归原作者 小小酥_w 所有, 如有侵权,请联系我们删除。

“spark期末整理复习”的评论:

还没有评论