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)

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
PythonPySpark中,数据清洗是一个非常重要的环节。通常对于缺失值的处理有两种策略:删除和填充。在Python中,可以使用pandas库来进行数据清洗。可以通过`dropna()`函数删除包含缺失值的行,设置`inplace=True`可以直接在原数据上更改。例如,可以使用`Nowcoder.dropna(how='any')`来删除包含缺失值的行。 而在PySpark中,可以使用`DataFrame`对象的`dropna()`函数来删除缺失值。通过设置`how`参数为`any`或`all`来指定删除包含任意或所有缺失值的行。另外,可以使用`fillna()`函数来填充缺失值。通过指定一个值或使用列的均值、中位数等来填充缺失值。例如,可以使用`df.dropna(how='any')`来删除包含缺失值的行。 对于何时采取何种策略,一般来说,如果缺失值的占比较大,直接删除对整体数据的影响不会太大。可以使用`agg()`函数来计算每列的缺失值占比。可以通过统计每列缺失值数量与总行数的比例来判断。如果缺失值占比较小,可以考虑使用填充的方式来处理缺失值。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [PySpark入门十一:数据清洗之缺失值处理](https://blog.csdn.net/weixin_43790705/article/details/108425792)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [Python:启程 数据分析-牛客网在线编程-数据清洗+json处理-24-28](https://blog.csdn.net/qq_32669453/article/details/127484792)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

阿ฅ( ̳• ε • ̳)ฅ

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

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

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

打赏作者

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

抵扣说明:

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

余额充值