spark:map mapPartitions flatmap
来源:互联网 发布:矩阵的概念 编辑:程序博客网 时间:2024/05/21 16:54
map
map是对RDD中的每个元素都执行一个指定的函数来产生一个新的RDD。任何原RDD中的元素在新RDD中都有且只有一个元素与之对应。
举例:
scala> val a = sc.parallelize(1 to 9, 3)scala> val b = a.map(x => x*2)scala> a.collectres10: Array[Int] = Array(1, 2, 3, 4, 5, 6, 7, 8, 9)scala> b.collectres11: Array[Int] = Array(2, 4, 6, 8, 10, 12, 14, 16, 18)
上述例子中把原RDD中每个元素都乘以2来产生一个新的RDD。
mapPartitions
mapPartitions是map的一个变种。map的输入函数是应用于RDD中每个元素,而mapPartitions的输入函数是应用于每个分区,也就是把每个分区中的内容作为整体来处理的。
它的函数定义为:
def mapPartitions[U: ClassTag](f: Iterator[T] => Iterator[U], preservesPartitioning: Boolean = false): RDD[U]
f即为输入函数,它处理每个分区里面的内容。每个分区中的内容将以Iterator[T]传递给输入函数f,f的输出结果是Iterator[U]。最终的RDD由所有分区经过输入函数处理后的结果合并起来的。
举例:
scala> val a = sc.parallelize(1 to 9, 3)scala> def myfunc[T](iter: Iterator[T]) : Iterator[(T, T)] = { var res = List[(T, T)]() var pre = iter.next while (iter.hasNext) { val cur = iter.next; res .::= (pre, cur) pre = cur; } res.iterator}scala> a.mapPartitions(myfunc).collectres0: Array[(Int, Int)] = Array((2,3), (1,2), (5,6), (4,5), (8,9), (7,8))
上述例子中的函数myfunc是把分区中一个元素和它的下一个元素组成一个Tuple。因为分区中最后一个元素没有下一个元素了,所以(3,4)和(6,7)不在结果中。
mapPartitions还有些变种,比如mapPartitionsWithContext
flatMap
与map类似,区别是原RDD中的元素经map处理后只能生成一个元素,而原RDD中的元素经flatmap处理后可生成多个元素来构建新RDD。
举例:对原RDD中的每个元素x产生y个元素(从1到y,y为元素x的值)
scala> val a = sc.parallelize(1 to 4, 2)scala> val b = a.flatMap(x => 1 to x)scala> b.collectres12: Array[Int] = Array(1, 1, 2, 1, 2, 3, 1, 2, 3, 4)
0 0
- spark:map mapPartitions flatmap
- spark:map mapPartitions flatmap
- spark map flatMap flatMapToPair mapPartitions 的区别和用途
- Spark RDD中Transformation的map、flatMap、mapPartitions、glom详解
- spark 的transformations之map,flatMap,mapPartitions,mapPartitionsWithIndex的用法
- spark map flatMap flatMapToPair mapPartitions 的区别和用途
- Spark API 详解/大白话解释 之 map、mapPartitions、mapValues、mapWith、flatMap、flatMapWith、flatMapValues
- Spark API 详解/大白话解释 之 map、mapPartitions、mapValues、mapWith、flatMap、flatMapWith、flatMapValues
- 第45课 Spark 2.0实战之Dataset:map、flatMap、mapPartitions、dropDuplicate、coalesce、repartition等
- map、mapPartitions、mapValues、mapWith、flatMap、flatMapWith、flatMapValues
- Spark map flatMap
- <spark>flatmap 和 map
- Spark API 之 map、mapPartitions
- spark中的map和flatMap
- Spark操作-map和flatMap
- Spark map与flatmap区别
- Spark之 map和flatMap
- Spark中map与flatMap
- ios开发 自定义带弧度的UITabBar,保留系统原有push和pop过渡效果
- PAT (Basic Level) Practise (中文)--1001
- C++多重继承要慎用!
- JAVA 动态代理(proxy)的实现和源码分析
- C++的指针和引用
- spark:map mapPartitions flatmap
- TCP_NODELAY详解
- 彻底搞懂Python的字符编码
- 大型网站架构系列:负载均衡详解(1)
- Project ID: org.apache.maven.plugins:maven-assembly-plugin Reason: POM 'org.apache.maven.plugins:ma
- 51—Nod 1384 全排列
- junit4单元测试
- 汇编标志位简介
- 杂