PySpark数据计算
PySpark数据计算
map方法
掌握RDD的map方法
map方法
PySpark的数据计算,都是基于RDD对象来进行的,那么如何进行呢?
自然是依赖,RDD对象内置丰富的:成员方法(算子)
map算子
功能:map算子 是将RDD的数据一条条处理(处理的逻辑 基于map算子中接收的处理函数),返回新的RDD
rdd.map(func)
# 语法
# func: f:(T) -> U
# f: 表示这是一个函数(方法)
# (T)-> U 表示的是方法的定义:
# ()表示传入参数,(T)表示传入1个参数,()表示没有传入参数
# T是泛型的代称,在这里表示 任意类型
# U也是泛型的代称,在这里表示,任意类型# -> U 表示返回值
#(T)-> U总结起来的意思是:这是一个方法,这个方法接收一个参数传入,传入参数类型不限,返回一个返回值,返回值类型不限
#(A) -> A 总结起来的意思是:这是一个方法,这个方法接收一个参数传入,传入参数类型不限,返回一个返回值,返回值和传入参数类型一致
from pyspark import SparkConf,SparkContext
import os
os.environ['PYSPARK_PYTHON'] = "D:/dev/python/python310/python.exe"conf = SparkConf().setMaster("local[*]").setAppName("test_spark")
sc = SparkContext(conf=conf)#准备一个RDD
rdd = sc.parallelize([1,2,3,4,5])# 通过map方法将全部数据都乘以18
# def func(data):
# return data * 10
rdd2 = rdd.map(lambad x: x*10).map(lambda x: x+5)
print(rdd2.collect())
# (T) -> U
# (T) -> T# 链式调用
总结
1.map算子(成员方法)
接受一个处理函数,可以lambda表达式快速缩写
对RDD内的元素逐个处理,并返回一个新的RDD
2.链式调用
对于返回值是新RDD的算子,可以通过链式调用的方式多次调用算子
flatMap方法
掌握RDD的flatMap方法
flatMap算子
功能:对rdd执行map操作,然后进行<font color=“red">解除嵌套操作
"""
解除嵌套
"""
# 嵌套的list
lst = [[1,2,3],[4,5,6],[7,8,9]]
# 如果解除了嵌套
lst = [1,2,3,4,5,6,7,8,9]
from pyspark import SparkConf,SparkContext
import os
os.environ[