
map()和flatMap()的区别
发布日期:2021-05-08 03:58:09
浏览次数:15
分类:精选文章
本文共 1361 字,大约阅读时间需要 4 分钟。
map()和flatMap()的区别
map将函数作用到数据集的每一个元素上,生成一个新的分布式的数据集(RDD)返回
flatMap会先执行map的操作,再将所有对象合并为一个对象,返回值是一个Sequence
flatMap() 的一个简单用途是把输入的字符串切分为单词
3.5.1 基本RDD首先来讲讲哪些转化操作和行动操作受任意数据类型的 RDD 支持。1. 针对各个元素的转化操作你很可能会用到的两个最常用的转化操作是 map() 和 filter()(见图 3-2)。转化操作map() 接收一个函数,把这个函数用于 RDD 中的每个元素,将函数的返回结果作为结果RDD 中对应元素的值。而转化操作 filter() 则接收一个函数,并将 RDD 中满足该函数的元素放入新的 RDD 中返回。例 3-26:Python 版计算 RDD 中各值的平方nums = sc.parallelize([1, 2, 3, 4])squared = nums.map(lambda x: x * x).collect()for num in squared: print "%i " % (num) 有时候,我们希望对每个输入元素生成多个输出元素。 flatMap() 实现该功能的操作叫作 flatMap()。 和 map() 类似,我们提供给 flatMap() 的函数被分别应用到了输入 RDD 的每个元素上。不过返回的不是一个元素,而是一个返回值序列的迭代器。输出的 RDD 倒不是由迭代器组成的。我们得到的是一个包含各个迭代器可访问的所有元素的 RDD。flatMap() 的一个简单用途是把输入的字符串切分为单词,你可以把 flatMap() 看作将返回的迭代器“拍扁”,这样就得到了一个由各列表中的元素组成的 RDD,而不是一个由列表组成的 RDD#方法2需要复制这三行import findsparkfindspark.init()import pyspark import sysfrom pyspark import SparkConf, SparkContextif __name__ == "__main__":# master = "local" if len(sys.argv) == 2: master = sys.argv[1]# 在 Python 中初始化 Spark conf = SparkConf().setMaster("local").setAppName("My App") sc = SparkContext(conf = conf)# 通过sc.parallelize可以把Python list,NumPy array或者Pandas Series,Pandas DataFrame转成Spark的RDD数据。 lines = sc.parallelize(["hello world", "hi"]) words = lines.flatMap( lambda line : line.split(" ") ) words.first() print(words.first())
发表评论
最新留言
不错!
[***.144.177.141]2025年04月12日 22时30分34秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
AcWing 828. 模拟栈
2021-05-07
(20200328已解决)从docker容器内复制文件到宿主机
2021-05-07
理解Docker ulimit参数
2021-05-07
OpenAI Gym简介及初级实例
2021-05-07
int 转 CString
2021-05-07
Edit编辑框自动换行与长度
2021-05-07
Java面向对象
2021-05-07
JAVA带标签的break和continue
2021-05-07
Java获取线程基本信息的方法
2021-05-07
vue源码分析(MVVM篇)
2021-05-07
设计模式之组合模式
2021-05-07
(Python学习笔记):字典
2021-05-07
(C++11/14/17学习笔记):线程启动、结束,创建线程多法、join,detach
2021-05-07
C++并发与多线程(一)
2021-05-07
java一些基本程序
2021-05-07
vue-依赖-点击复制
2021-05-07
LeetCode 116填充每个节点的下一个右侧结点指针
2021-05-07
2021-4-28【PTA】【L2-1 包装机 (25 分)】
2021-05-07
Arduino mega2560+MPU6050利用加速度值控制舵机
2021-05-07
紫书——蛇形填数
2021-05-07