首页 > 其他分享 >常用的rddTransformation算子

常用的rddTransformation算子

时间:2024-01-29 18:11:07浏览次数:24  
标签:常用 rddTransformation sc collect rdd 算子 print data

根据文章:

暑假生活每周总结10

   
from pyspark import SparkContext

# 创建SparkContext对象
sc = SparkContext("local", "RDD Transformations Example")

# 假设我们有一个RDD数据源
data = sc.parallelize([1, 2, 3, 4, 5])

# 1.map算子
mapped_data = data.map(lambda x: x * 2)
print(mapped_data.collect())  # 输出:[2, 4, 6, 8, 10]

#2. flatMap算子
nested_data = sc.parallelize([[1, 2], [3, 4]])
flat_mapped_data = nested_data.flatMap(lambda x: x)
print(flat_mapped_data.collect())  # 输出:[1, 2, 3, 4]

#3. reduceByKey算子,假设是KV型数据
kv_data = sc.parallelize([(1, 'a'), (1, 'b'), (2, 'c')])
reduced_data = kv_data.reduceByKey(lambda a, b: a + b)
print(reduced_data.collect())  # 输出:[(1, 'ab'), (2, 'c')]

#4. mapValues算子
kv_data2 = sc.parallelize([(1, 10), (2, 20)])
mapped_values_data = kv_data2.mapValues(lambda v: v * 2)
print(mapped_values_data.collect())  # 输出:[(1, 20), (2, 40)]

#5. groupBy算子
grouped_data = data.groupBy(lambda x: x % 2)
print(grouped_data.collect())  # 输出:[(0, <pyspark.resultiterable.ResultIterable object at ...>), (1, <pyspark.resultiterable.ResultIterable object at ...>)]

#6. filter算子
filtered_data = data.filter(lambda x: x % 2 == 0)
print(filtered_data.collect())  # 输出:[2, 4]

# 7.distinct算子
distinct_data = data.distinct()
print(distinct_data.collect())  # 输出:[1, 2, 3, 4, 5]

#8. union算子
rdd1 = sc.parallelize([1, 2])
rdd2 = sc.parallelize([3, 4])
union_data = rdd1.union(rdd2)
print(union_data.collect())  # 输出:[1, 2, 3, 4]

#9. join算子
rdd_kv1 = sc.parallelize([(1, 'a'), (2, 'b')])
rdd_kv2 = sc.parallelize([(1, 'x'), (2, 'y')])
joined_data = rdd_kv1.join(rdd_kv2)
print(joined_data.collect())  # 输出:[(1, ('a', 'x')), (2, ('b', 'y'))]
# 10. intersection算子
rdd1 = sc.parallelize([1, 2, 3, 4, 5])
rdd2 = sc.parallelize([4, 5, 6, 7, 8])
intersection_data = rdd1.intersection(rdd2)
print(intersection_data.collect())  # 输出:[4, 5]

# 11. glom算子
data = sc.parallelize(range(10), numSlices=4)  # 创建一个分区数为4的RDD
glom_data = data.glom()
for part in glom_data.collect():
    print(part)  # 输出每个分区内的元素列表

# 12. groupByKey算子
kv_data = sc.parallelize([(1, 'a'), (1, 'b'), (2, 'c'), (3, 'd')])
grouped_data = kv_data.groupByKey()
for key, values in grouped_data.collect():
    print(f"Key: {key}, Values: {list(values)}")  # 输出:Key: 1, Values: ['a', 'b'], Key: 2, Values: ['c'], Key: 3, Values: ['d']
#13. sortBy算子
sorted_data = data.sortBy(lambda x: -x)  # 降序排序
print(sorted_data.collect())  # 输出:[5, 4, 3, 2, 1]

#14. sortByKey算子(针对KV型)
kv_sorted_data = sc.parallelize([(2, 'b'), (1, 'a'), (3, 'c')])
sorted_by_key = kv_sorted_data.sortByKey(ascending=True)
print(sorted_by_key.collect())  # 输出:[(1, 'a'), (2, 'b'), (3, 'c')]

  

 

1.map算子,将rdd数据进行依次处理,基于map的算子中所收集的逻辑函数。进行逻辑运算,返回rdd,比较常见。

2.flatMap算子,对rdd执行map操作,进行解嵌套,返回rdd。

3.reduceByKey算子,主要是针对KV型数据进行key分组进行数据的计算,根据所提供的逻辑,进行组内数据的聚合操作。

4.mapValues算子,主要是针对二元元组的rdd,对其内部的value执行map操作,传入的逻辑函数,主要是对于value值得操作。

5.groupBy算子,对rdd的数据进行分组。分组完成后返回二元元组,同组数据放入一个迭代器中作为value值。

6.filter算子,主要是过滤数据。传入的函数要有bool类型的返回值。

7.distinct算子,主要是进行数据的去重操作,返回新的rdd。

8.union算子,主要是对于连个rdd,进行合并返回。

9.join算子,对于两个rdd可以执行join操作,相当于sql中的内外连接。语法有join,leftOuterJoin,rightOuterJoin。

10.intersection算子,主要是求取两个rdd的交集,并返回新的rdd。

11.glom算子,主要是进行对于rdd按照其分区进行嵌套。

12.groupByKey算子,针对KV型rdd,自然按照key进行分组。

13.sortBy算子,主要是对rdd数据进行排序,基于你指定的排序依据。sortBy(func,ascending=False,numPartitions=1) true为升序,false为降序。

14.sortByKey算子,主要是针对KV型rdd,按照key进行排序。sortByKey(ascending=True,numPartitions=1,keyfunc=所要书写的处理方法,相当于在排序前的数据处理)实例化python代码实现

标签:常用,rddTransformation,sc,collect,rdd,算子,print,data
From: https://www.cnblogs.com/syhxx/p/17995065

相关文章

  • CTF常用工具 | MISC & CRYPTO & WEB
    记录一些做题过程用到的工具,不定时更新MISC010Editor:查看及处理十六进制文件StegSolve:查看及处理隐写图片Stegsolve(隐写分析工具)-宇2468-博客园WaterMarkH:添加及提取图片盲水印,提取不需要原图BlindWaterMark-master:添加及提取图片盲水印,提取时需要原图【Python2Python3......
  • 接口压力测试常用的性能指标,接口优化的点,分布式锁的方案常用的方案
    1.接口压力测试常用的性能指标2.接口优化的点3.实现分布式锁的方案常用的方案一.接口压力测试常用的性能指标:1、吞吐量吞吐量是系统每秒可以处理的事务数,也称为TPS(TransactionPerSecond)。比如:一次点播流程,从请求进入系统到视频画图显示出来这整个流程就是一次事务。所以......
  • MySQL 常用工具
    系统数据库MySQL数据库安装完成后,自带了以下四个数据库,具体作用如下: 常用工具mysql该mysql不是指mysql服务,而是指mysql的客户端工具 mysqladminmysqladmin是一个执行管理操作的客户端程序。可以用它来检查服务器的配置和当前状态、创建并删除数据库等。 my......
  • Linux磁盘管理常用的三个命令!
    在Linux系统中,如何有效地对存储空间加以使用和管理,是一项非常重要且关键的技术。而且Linux磁盘管理好坏直接关系到整个系统的性能问题,那么你知道Linux磁盘管理有哪些常用命令吗?这篇文章为大家介绍一下Linux磁盘管理常用的三个命令。Linux磁盘管理常用三个命令为df、du、fd......
  • shell脚本之 Bash的常用命令
    永远的Helloworld1.输出命令echoecho"Helloworld"和echo'Helloworld!'选项:-e支持反斜线控制的字符转换​ 可以通过通配符支持16进制ASCII字符​ 还可以输出颜色echo-e"\e[1;31mabcd\e[0m"​ ehco-e"\e[1;颜色命令内容\e[0m"30m黑色31m......
  • 电脑常用快捷键
    Ctrl+C:复制Ctrl+V:粘贴Ctrl+A:全选Ctrl+X:剪切Ctrl+Z:撤销Ctrl+S:保存Alt+F4:关闭窗口Alt+Tab:在打开的应用之间切换Shift+Delete:永久删除Windows+R:运行cmd:命令行窗口calc:启动计算机iexplore:IE浏览器Windows+E:我的电脑Ctrl+Shift+Esc:打开任务......
  • python之常用标准库-sys/os
    1.syssys常用的方法sys.path.append/sys.path.insert1#!/usr/bin/python2importos,sys3sys.path.insert(0,os.path.dirname(os.path.dirname(__file__)))#将路径插入第1个位置4sys.path.append(os.path.dirname(os.path.dirname(__file__)))#将路径追加到末尾View......
  • [Git]入门及其常用命令
    【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)https://www.cnblogs.com/cnb-yuchen/p/17993832出自【进步*于辰的博客】Git的难点在于细节很多,一般很难一次性掌握。若想快速学会乃至掌握,就需要查阅博文、视频等资料,手打测试一些常用命令。参考笔记二,P79~81;笔......
  • [刷题笔记] 关于栈 & 队列常用操作方法的再探索
    Part0:序其实本来这都是很基础的东西,可惜野路子出身基础并不扎实。借着这个机会整合一下吧。也做了一些题了解了一些基本操作方法。本文对于栈和队列的原理不再过多赘述,默认读者掌握基本原理。参考题单:数据结构加强001:栈和队列2024现代信息学测试1:栈和队列本文所讲例题......
  • SQLServer和Oracle常用函数对比
      1.绝对值 S:select abs(-1) value O:select abs(-1) value from dual 2.取整(大) S:select ceiling(-1.001) value O:select ceil(-1.001) value from dual 3.取整(小) S:select floor(-1.001) value O:select flo......