Python+PySpark数据计算

1、map算子

对RDD内的元素进行逐个处理,并返回一个新的RDD,可以使用lambda以及链式编程,简化代码。

 注意:再python中的lambda只能有行,如果有多行,要写成外部函数;(T)->U表示要传入一个函数

from pyspark import SparkConf,SparkContext
import os
# pyspark无法自动寻到python的编译器,所以需要我们自己手动配置
os.environ['PYSPARK_PYTHON']='"D:\\softer\\anaconda\\Anacond\\python.exe"'

conf =SparkConf().setMaster("local[*]").setAppName("text_spark")
sc =SparkContext(conf=conf)
rdd1=sc.parallelize(["123,123","123,123"]) # list类型
rdd2=rdd1.map(lambda x:x.split(","))
print(rdd2.collect())
sc.stop()

2、FlatMap算子

整体逻辑与map相同,但多了一个嵌套解除功能

from pyspark import SparkConf,SparkContext
import os
# pyspark无法自动寻到python的编译器,所以需要我们自己手动配置
os.environ['PYSPARK_PYTHON']='"D:\\softer\\anaconda\\Anacond\\python.exe"'

conf =SparkConf().setMaster("local[*]").setAppName("text_spark")
sc =SparkContext(conf=conf)
rdd1=sc.parallelize(["123,123","123,123"]) # list类型
rdd2=rdd1.flatMap(lambda x:x.split(","))
print(rdd2.collect())
sc.stop()

flatMap ->  ['123', '123', '123', '123']

map ->  [['123', '123'], ['123', '123']](少了一层[ ])

3、reduce算子

功能:对传入的数据进行聚合

from pyspark import SparkConf,SparkContext
import os
# pyspark无法自动寻到python的编译器,所以需要我们自己手动配置
os.environ['PYSPARK_PYTHON']='"D:\\softer\\anaconda\\Anacond\\python.exe"'

conf =SparkConf().setMaster("local[*]").setAppName("text_spark")
sc =SparkContext(conf=conf)
rdd1=sc.parallelize([1,2,3,4,5,6,6]) # list类型
print(rdd1.reduce(lambda x,y: x+y)) # 27
sc.stop()

4、reduceBykey算子

功能:传入数据组,能进行分组,并进行逻辑运算。

from pyspark import SparkConf,SparkContext
import os
# pyspark无法自动寻到python的编译器,所以需要我们自己手动配置
os.environ['PYSPARK_PYTHON']='"D:\\softer\\anaconda\\Anacond\\python.exe"'

conf =SparkConf().setMaster("local[*]").setAppName("text_spark")
sc =SparkContext(conf=conf)
rdd1=sc.parallelize([('k1',10),("k2",20),('k1',30),("k2",40)]) # list类型
rdd2=rdd1.reduceByKey(lambda x,y: x+y)
print(rdd2.collect())
sc.stop()
#[('k1', 40), ('k2', 60)]

5、filter算子

功能:过滤,保留想要的数据,结果为True就对该结果进行返回;

6、distinct算子

功能:对传入的数据进行去重,不需要传入参数,直接调用该方法即可

7、sortBy算子

功能:排序,可自定义排序;func:(T)->U;ascending=False(降序)/True(升序)

numPartition=>分区(可设置为1)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小土嘿嘿

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值