Spark的复习整理

目录

scala基础

1.map方法

2.foreach()方法

3.filter()方法

4.flatten()方法

5.flatMap()方法

6.groupBy()方法

spar基础---RDD方法  

一.map方法转换数据

2.sortby方法

3.collect方法查询

4.flatMap()方法转换数据

5.take(N)方法

6.使用union()方法合并多个RDD

 7.filter()方法进行过滤

8.使用distinct()方法进行去重

 9.intersection()方法

10.subtract()方法

11.cartesian()方法

三。spark编程进阶

scala基础
1.map方法
可通过一个函数重新计算列表中的所有元素,并且返回一个包含相同数目元素的新列表。

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

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

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

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

6.groupBy()方法

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

spar基础---RDD方法  
1.map方法转换数据
是一种基础的RDD转换操作,可以对RDD中的每一个数据元素通过某种函数进行转换并返回新的RDD。

map()方法是转换操作,不会立即进行计算。

转换操作是创建RDD的第二种方法,通过转换已有RDD生成新的RDD。因为RDD是一个不可变的集合,所以如果对RDD数据进行了某种转换,那么会生成一个新的RDD。

                        

2.sortby方法
用于对标准RDD进行排序,有3个可输入参数,说明如下。

        •第1个参数是一个函数f:(T) => K,左边是要被排序对象中的每一个元素,右边返回的值是元素中要进行排序的值。

        •第2个参数是ascending,决定排序后RDD中的元素是升序的还是降序的,默认是true,即升序排序,如果需要降序排序那么需要将参数的值设置为false。

        •第3个参数是numPartitions,决定排序后的RDD的分区个数,默认排序后的分区个数和排序之前的分区个数相等,即this.partitions.size。

        第一个参数是必须输入的,而后面的两个参数可以不输入。

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

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

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

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

获取RDD的前5个元素

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

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

 7.filter()方法进行过滤

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

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

创建一个带有重复数据的RDD,并使用distinct()方法去重。

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

10.subtract()方法

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

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

创建两个RDD,分别有4个元素,通过cartesian()方法求两个RDD的笛卡儿积。

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

2.查看及获取数据的常用函数或方法
方法

描述

printSchema

打印数据模式

show

查看数据

first/head/take/takeAsList

获取若干行数据

collect/collectAsList

获取所有数据

3.DataFrame的创建
在 Pandas 中,DataFrame 可以看做是一个二维的表格数据结构。我们可以通过多种方式来创建 DataFrame,以下是几种常见的方法:

从列表、字典、元组、NumPy 数组或 Pandas 的 Series 等数据类型创建 DataFrame。
从 CSV、Excel、SQL 数据库、JSON 等文件或数据源中读取数据创建 DataFrame。
手动创建一个空的 DataFrame,并逐行添加数据
import pandas as pd
 
data = {'name': ['Alice', 'Bob', 'Charlie', 'David'],
        'age': [25, 32, 18, 47],
        'gender': ['F', 'M', 'M', 'M']}
 
df = pd.DataFrame(data)
print(df)
结果为

name  age gender
0     Alice   25      F
1       Bob   32      M
2   Charlie   18      M
3     David   47      M
4.从文件或数据源中读取数据创建 DataFrame
         在Python中,我们可以使用pandas库中的read_csv()函数从文件或数据源中读取数据创建DataFrame。 read_csv()函数默认将以逗号分隔的文件读入数据,但是您可以使用其他分隔符。此外,pandas还提供了许多其他用于读取各种文件格式的函数

import pandas as pd  
from sqlalchemy import create_engine  
  
# 创建一个到 SQL 数据库的引擎  
engine = create_engine('sqlite:///example.db')  # 示例为 SQLite 数据库  
  
# 从 SQL 查询中读取数据  
query = "SELECT * FROM table_name"  
df = pd.read_sql(query, engine)  
  
# 显示 DataFrame 的前几行  
print(df.head())
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
                        
原文链接:https://blog.csdn.net/Doryh1010/article/details/138872843

  • 9
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值