Spark编程之基本的RDD算子sparkContext,foreach,foreachPartition, collectAsMap
来源:互联网 发布:全国心智障碍者数据 编辑:程序博客网 时间:2024/04/27 16:15
Spark编程之基本的RDD算子sparkContext,foreach,foreachPartition, collectAsMap
- 1) context, sparkContext
返回一个RDD的sparkContext,当我们需要用到一个sc的时候,可以通过rdd.sparkContext来获取这个rdd的sc。
val c = sc.parallelize(List("Gnu", "Cat", "Rat", "Dog"), 2)c.context //通过调用context方法可以获得创建这个rdd的sparkcontext。res8: org.apache.spark.SparkContext = org.apache.spark.SparkContext@58c1c2f1
- 2) foreach
执行一个不返回值的函数操作,传入的参数是一个函数,返回值为unit。
def foreach(f: T => Unit)
val c = sc.parallelize(List("cat", "dog", "tiger", "lion", "gnu", "crocodile", "ant", "whale", "dolphin", "spider"), 3)c.foreach(x => println(x + "s are yummy"))lions are yummygnus are yummycrocodiles are yummyants are yummywhales are yummydolphins are yummyspiders are yummy
- 3) foreachPartition
穿入的值为一个函数,对每一个分区执行一个操作,但是不返回值。这个函数的接收参数为Iterator类型。
def foreachPartition(f: Iterator[T] => Unit)
val b = sc.parallelize(List(1, 2, 3, 4, 5, 6, 7, 8, 9), 3)b.foreachPartition(x => println(x.reduce(_ + _)))// 注意这个x 其实是一个iterator类型。61524
- 4) lookup
lookup作用于键值对类型的数据,会去查找RDD中的key值为特定值的数据,然后将该数据封装在Seq类型中返回。
def lookup(key: K): Seq[V]
val a = sc.parallelize(List("dog", "tiger", "lion", "cat", "panther", "eagle"), 2)val b = a.map(x => (x.length, x))b.lookup(5) //在这里长度为5的只有 tiger和eagle类型,所以返回的结果如下:res0: Seq[String] = WrappedArray(tiger, eagle)
- 5) collect, toArray
这个算子是一个action类型,也就意味着spark执行到这个算子的时候会启动一个job来进行执行。
会将一个RDD转换成为一个数组返回。
def collect(): Array[T]def toArray(): Array[T]
值得注意的是,collect有一个重载,传入的是一个偏函数。
def collect[U: ClassTag](f: PartialFunction[T, U]): RDD[U]
如果传入的是一个偏函数的话,比如f = T -> U, 他会将这个值转换为U类型执行好之后,然后输出。
val c = sc.parallelize(List("Gnu", "Cat", "Rat", "Dog", "Gnu", "Rat"), 2)c.collectres29: Array[String] = Array(Gnu, Cat, Rat, Dog, Gnu, Rat)
- 6) collectAsMap [Pair]
这个类似于collect,不过它作用于key-value类型的RDD,然后将其以一个Map类型的数据返回。
def collectAsMap(): Map[K, V]
val a = sc.parallelize(List(1, 2, 1, 3), 1)val b = a.zip(a)b.collectAsMap //返回值为Map类型res1: scala.collection.Map[Int,Int] = Map(2 -> 2, 1 -> 1, 3 -> 3)
阅读全文
1 0
- Spark编程之基本的RDD算子sparkContext,foreach,foreachPartition, collectAsMap
- Spark算子[01]:foreach,foreachPartition
- spark RDD算子(十)之PairRDD的Action操作countByKey, collectAsMap
- Spark编程之基本的RDD算子-aggregate和aggregateByKey
- Spark编程之基本的RDD算子coalesce, repartition, checkpoint
- Rdd的 foreach 和 foreachPartition
- Spark算子:RDD行动Action操作(4)–countByKey、foreach、foreachPartition、sortBy
- Spark算子:RDD行动Action操作(4)–countByKey、foreach、foreachPartition、sortBy
- Spark算子:RDD行动Action操作(4)–countByKey、foreach、foreachPartition、sortBy
- Spark算子:RDD行动Action操作(4)–countByKey、foreach、foreachPartition、sortBy
- spark RDD中foreachPartition和foreach说明
- Spark编程之基本的RDD算子之fold,foldByKey,treeAggregate, treeReduce
- Spark编程之基本的RDD算子之map,mapPartitions, mapPartitionsWithIndex.
- Spark编程之基本的RDD算子之zip,zipPartitions,zipWithIndex,zipWithUniqueId
- Spark编程之基本的RDD算子之cogroup,groupBy,groupByKey
- Spark编程之基本的RDD算子之join,rightOuterJoin, leftOuterJoin
- Spark编程之基本的RDD算子之glom,substract,substractByKey,intersection,distinct,union
- Spark编程之基本的RDD算子之fold,foldByKey,treeAggregate, treeReduce
- Scala基础入门(一)Scala 简介
- linux的权限管理
- Ecplise 控制台输出中文乱码问题
- Beaglebone Black上使用Codesys开发EtherCAT(三)
- JDBC连接SQL Server 2014
- Spark编程之基本的RDD算子sparkContext,foreach,foreachPartition, collectAsMap
- 数组、集合工具类
- Java实战训练(一)
- msf之SNMP的扫描与枚举
- KVM安装报错Failed to connect socket to '/var/run/libvirt/libvirt-sock': No such file or directory
- canvas图片体积压缩
- Python3 异常处理
- HDU6045+Is Derek lying?(思路)+多校联赛第二场
- Find The Multiple(poj 1426)