Spark RDD操作记录(总结)

创建List
intRDD = sc.parallelize(List(1,2,3,4,5))

过滤包含
stringRDD.filter(_.contains("a")).collect()

去重
stringRDD.distinct.collect()

RDD拆分
val sRDD = intRDD.randomSplit(Array(0.4,0.6))

显示拆分后的RDD
sRDD(0).collect()

奇偶区分
intRDD.groupBy(x => {if (x % 2 == 0) "even" else "old"}).collect()

并集运算
intRDD1.union(intRDD2).union(intRDD3).collect()

++ 运算
(intRDD1 ++ intRDD2 ++ intRDD3).collect()

交集运算
intRDD1.intersection(intRDD2).collect()

差集运算
intRDD1.subtract(intRDD2).collect()

笛卡尔乘积
intRDD1.cartesian(intRDD2).collect()

取第一条数据
intRDD.first

取前两条数据
intRDD.take(2)

从小到大读前三条
intRDD.takeOrdered(3)

从大到小读前三条
intRDD.takeOrdered(3)(Ordering[Int].reverse)

统计 intRDD.stats
最小 min
最大 max
stdev 标准偏差
count 计数
sum 求和
mean 平均

创建范例
val kvRDD1 = sc.parallelize(List((3,4),(3,6),(5,6),(1,2)))

列出所有key值
kvRDD1.keys.collect()

列出所有的value
kvRDD1.values.collect()
 
列出所有key小于5
kvRDD1.filter{case (key,value) => key < 5}.collect()

value值平方运算
kvRDD1.mapValues(x => x * x ).collect()

按照key小到大排序
kvRDD1.sortByKey(true).collect()  //可以不传参数

reduceByKey
kvRDD1.reduceByKey((x,y) => x+y).collect()  kvRDD1.reduceByKey(_+_).collect()

join运算
kvRDD1.join(kvRDD2).collect()

读取第一条数据的第一个元素
kvRDD1.first._1

计算每一个key值的条数
kvRDD1.countByKey()

输入key来查找value值
kvRDD1.lookup(3)

时间: 2024-10-25 12:24:04

Spark RDD操作记录(总结)的相关文章

Spark RDD操作(1)

https://www.zybuluo.com/jewes/note/35032 RDD是什么? RDD是Spark中的抽象数据结构类型,任何数据在Spark中都被表示为RDD.从编程的角度来看,RDD可以简单看成是一个数组.和普通数组的区别是,RDD中的数据是分区存储的,这样不同分区的数据就可以分布在不同的机器上,同时可以被并行处理.因此,Spark应用程序所做的无非是把需要处理的数据转换为RDD,然后对RDD进行一系列的变换和操作从而得到结果.本文为第一部分,将介绍Spark RDD中与Ma

Spark RDD 操作实战之文件读取

/1.本地文件读取 val local_file_1 = sc.textFile("/home/hadoop/sp.txt") val local_file_2 = sc.textFile("file://home/hadoop/sp.txt") //2.当前目录下的文件 val file1 = sc.textFile("sp.txt") //3.HDFS文件 val hdfs_file1 = sc.textFile("hdfs://1

Spark编程模型及RDD操作

转载自:http://blog.csdn.net/liuwenbo0920/article/details/45243775 1. Spark中的基本概念 在Spark中,有下面的基本概念.Application:基于Spark的用户程序,包含了一个driver program和集群中多个executorDriver Program:运行Application的main()函数并创建SparkContext.通常SparkContext代表driver programExecutor:为某App

Spark性能优化(2)——广播变量、本地缓存目录、RDD操作、数据倾斜

广播变量 背景 一般Task大小超过10K时(Spark官方建议是20K),需要考虑使用广播变量进行优化.大表小表Join,小表使用广播的方式,减少Join操作. 参考:Spark广播变量与累加器 Local Dir 背景 shuffle过程中,临时数据需要写入本地磁盘.本地磁盘的临时目录通过参数spark.local.dir配置. 性能优化点 spark.local.dir支持配置多个目录.配置spark.local.dir有多个目录,每个目录对应不同的磁盘,这样可以提升IO效率.另外,可以采

Java8函数式编程(二):类比Spark RDD算子的Stream流操作

1 Stream流 对集合进行迭代时,可调用其iterator方法,返回一个iterator对象,之后便可以通过该iterator对象遍历集合中的元素,这被称为外部迭代(for循环本身正是封装了其的语法糖),其示意图如下: 除此之外,还有内部迭代方法,这正是这里要说明的集合的stream()方法返回的Stream对象的一系列操作,比如,要统计一个数字列表的偶数元素个数,当使用Stream对象的操作时,如下: List<Integer> list = new ArrayList<Integ

【spark】RDD操作

RDD操作分为转换操作和行动操作. 对于RDD而言,每一次的转化操作都会产生不同的RDD,供一个操作使用. 我们每次转换得到的RDD是惰性求值的 也就是说,整个转换过程并不是会真正的去计算,而是只记录了转换的轨迹. 当遇到行动操作的时候,才会发生真正的计算,从DAG图的源头开始进行"从头到尾"的计算. 常见的操作 操作类型 函数名 作用 转化操作 map() 参数是函数,函数应用于RDD每一个元素,返回值是新的RDD flatMap() 参数是函数,函数应用于RDD每一个元素,将元素数

Spark RDD常用算子操作(八) 键值对关联操作 subtractByKey, join,fullOuterJoin, rightOuterJoin, leftOuterJoin

原文作者:翟开顺首发:CSDN本人仅为自己方便查阅做了摘抄,请支持原作者原文地址:https://blog.csdn.net/t1dmzks/article/details/72077428 github: https://github.com/zhaikaishun/spark_tutorial/tree/master/src/main/java/com/spark/rdd_tutorial/tutorial8先从spark-learning中的一张图大致了解其功能 subtractByKey

Spark RDD Action操作

reduce def reduce(f: (T, T) => T): T通过func函数聚集RDD中的所有元素,这个功能必须是可交换且可并联的 1 2 3 4 5 6 7 8 9 10 11 scala> val rdd1 = sc.makeRDD(1 to 10,2) rdd1: org.apache.spark.rdd.RDD[Int] = ParallelCollectionRDD[85] at makeRDD at <console>:24 scala> rdd1.r

【Spark】RDD操作具体解释4——Action算子

本质上在Actions算子中通过SparkContext运行提交作业的runJob操作,触发了RDD DAG的运行. 依据Action算子的输出空间将Action算子进行分类:无输出. HDFS. Scala集合和数据类型. 无输出 foreach 对RDD中的每一个元素都应用f函数操作,不返回RDD和Array,而是返回Uint. 图中.foreach算子通过用户自己定义函数对每一个数据项进行操作. 本例中自己定义函数为println,控制台打印全部数据项. 源代码: /** * Applie