Pyspark 数据计算

本文介绍了Spark中的map,flatMap,reduceByKey,filter和distinct操作,包括它们的功能、示例和使用场景。通过实例展示了如何在Spark中处理和转换数据,如元素映射、键值对聚合和数据筛选等。
摘要由CSDN通过智能技术生成

目录

map方法

flatMap 方法

reduceByKey方法

filter 算子

 distinct 算子


map方法

简单来说:是对rdd里每个元素进行操作

# 导包
from pyspark import SparkConf, SparkContext
#Caused by: org.apache.spark.SparkException: Python worker failed to connect back.
# 就是代码没有准确的找到python解释器
import os
os.environ["PYSPARK_PYTHON"] = "D:/APP/Anaconda/envs/teat1/python.exe"

# 创建SparkConf 类对象
conf = SparkConf().setMaster("local[*]").setAppName("test_spark")
# 拿到执行环境入口对象
sc = SparkContext(conf=conf)

# 通过parallelize 方法将python对象加载到spark内,成为RDD对象
rdd = sc.parallelize([1, 2, 3, 4, 5]) # 列表
# 通过map方法将全部数据都乘以十,再加5

def func(data):
    return data * 10

rdd2 = rdd.map(func).map(lambda x: x+5)
 # (T) -> U  含义就是要传的这个函数要满足接受一个参数的传入,能够返回一个返回值
print(rdd2.collect())
# 运行结果 [15, 25, 35, 45, 55]



flatMap 方法

 简单来说:和map方法差不多,就是比map方法多一个解除嵌套操作

 

reduceByKey方法

 功能:针对KV型RDD(二元元组,一个元组里只有两个元素 ('a', 1) ('b',1)),自动按着key 分组,然后根据你提供的聚合逻辑(加,减...),完成组内数据(value) 的聚合操作

# 导包
from pyspark import SparkConf, SparkContext
#Caused by: org.apache.spark.SparkException: Python worker failed to connect back.
# 就是代码没有准确的找到python解释器
import os
os.environ["PYSPARK_PYTHON"] = "D:/APP/Anaconda/envs/teat1/python.exe"

# 创建SparkConf 类对象
conf = SparkConf().setMaster("local[*]").setAppName("test_spark")
# 拿到执行环境入口对象
sc = SparkContext(conf=conf)

# 通过parallelize 方法将python对象加载到spark内,成为RDD对象
rdd = sc.parallelize([('男',99), ('男',88), ('女',94), ('女',93)]) # 列表
# 通过map方法将全部数据都乘以十,再加5


rdd2 = rdd.reduceByKey(lambda a,b:a+b)
 # (T) -> U  含义就是要传的这个函数要满足接受一个参数的传入,能够返回一个返回值
print(rdd2.collect())
#[('女', 187), ('男', 187)]



filter 算子

# 导包
from pyspark import SparkConf, SparkContext
#Caused by: org.apache.spark.SparkException: Python worker failed to connect back.
# 就是代码没有准确的找到python解释器
import os
os.environ["PYSPARK_PYTHON"] = "D:/APP/Anaconda/envs/teat1/python.exe"

# 创建SparkConf 类对象
conf = SparkConf().setMaster("local[*]").setAppName("test_spark")
# 拿到执行环境入口对象
sc = SparkContext(conf=conf)

# 通过parallelize 方法将python对象加载到spark内,成为RDD对象
rdd = sc.parallelize([1, 2, 3, 4, 5]) # 列表
# 通过 filter 对RDD进行过滤,偶数被保留
rdd2 = rdd.filter(lambda num: num%2 == 0)
 # (T) -> U  含义就是要传的这个函数要满足接受一个参数的传入,能够返回一个返回值
print(rdd2.collect())
#[2, 4]

 distinct 算子

# 导包
from pyspark import SparkConf, SparkContext
#Caused by: org.apache.spark.SparkException: Python worker failed to connect back.
# 就是代码没有准确的找到python解释器
import os
os.environ["PYSPARK_PYTHON"] = "D:/APP/Anaconda/envs/teat1/python.exe"

# 创建SparkConf 类对象
conf = SparkConf().setMaster("local[*]").setAppName("test_spark")
# 拿到执行环境入口对象
sc = SparkContext(conf=conf)

# 通过parallelize 方法将python对象加载到spark内,成为RDD对象
rdd = sc.parallelize([1, 2, 2, 2, 5]) # 列表
# 通过 filter 对RDD进行过滤,偶数被保留
rdd2 = rdd.distinct()
 # (T) -> U  含义就是要传的这个函数要满足接受一个参数的传入,能够返回一个返回值
print(rdd2.collect())
#[1, 2, 5]



sortBy算子 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值