RDD的基本命令
1 创建RDD
intRDD=sc.parallelize([3,1,2,5,6])
intRDD.collect()
[4, 2, 3, 6, 7]
2 单RDD转换
(1) MAP
def addone(x):
return (x+1)
intRDD.map(addone).collect()
[4, 2, 3, 6, 7] intRDD.map(lambda x: x+1).collect()
[4, 2, 3, 6, 7] stringRDD.map(lambda x:'fruit:'+x).collect()
['fruit:Apple', 'fruit:Orange', 'fruit:Banana', 'fruit:Grape', 'fruit:Apple']
(2) filter
intRDD.filter(lambda x: x<3).collect()
[1, 2]
intRDD.filter(lambda x:1<x and x<5).collect()
[3, 2]
stringRDD.filter(lambda x: "ra" in x).collect()
['Orange', 'Grape']
(3) distinct
intRDD.distinct().collect()
[1, 5, 2, 6, 3]
stringRDD.distinct().collect()
['Orange', 'Apple', 'Banana', 'Grape']
(4) randomSplit
sRDD=intRDD.randomSplit([0.4,0.6])
sRDD[0].collect()
[1, 2]
sRDD[1].collect()
[3, 5, 6]
(5) groupby
gRDD=intRDD.groupBy(lambda x:'even' if (x%2==0) else 'odd').collect()
print('even')
print(list(gRDD[0][1]))
print('odd')
print(gRDD[1][1]) even
[2, 6]
odd
<pyspark.resultiterable.ResultIterable object at 0x7f9ba805d438>
3 多个RDD转换运算
intRDD1=sc.parallelize([3,1,2,5,5])
intRDD2=sc.parallelize([5,6])
intRDD3=sc.parallelize([2,7])
并集union
intRDD1.union(intRDD2).union(intRDD3).collect()
[3, 1, 2, 5, 5, 5, 6, 2, 7]
交集intersection
intRDD1.intersection(intRDD2).collect()
[5]
差集 subtract
intRDD1.subtract(intRDD2).collect()
[1, 2, 3]
笛卡尔积乘积 cartesian
intRDD1.cartesian(intRDD2).collect()
[(3, 5),
(3, 6),
(1, 5),
(1, 6),
(2, 5),
(2, 6),
(5, 5),
(5, 5),
(5, 6),
(5, 6)]
动作 运算
first() 读取第一项数据
take(2) 取出前两项数据
takeOrdered(3) 从小到大排序,取出前三项数据
takeOrdered(3,key=lambda x:-x) 从大到小排序,取出前三项
统计功能
stats()
min()
max()
stdev()
count()
sum()
mean()
RDD key-value transformation
kvRDD1=sc.parallelize([(3,4),(3,6),(5,6),(1,2)])
kvRDD2=sc.parallelize([(3,8)]) kvRDD1.collect()
[(3, 4), (3, 6), (5, 6), (1, 2)]
kvRDD2.collect()
[(3, 8)]
join
kvRDD1.join(kvRDD2).collect()
[(3, (4, 8)), (3, (6, 8))]
leftOuterJoin
kvRDD1.leftOuterJoin(kvRDD2).collect() [(1, (2, None)), (3, (4, 8)), (3, (6, 8)), (5, (6, None))]
rightOuterJoin
kvRDD1.rightOuterJoin(kvRDD2).collect() [(3, (4, 8)), (3, (6, 8))]
subtractByKey
kvRDD1.subtractByKey(kvRDD2).collect() [(1, 2), (5, 6)]
RDD key-value Action
key-value first
kvFirst=kvRDD1.first()
print(kvFirst[0])
print(kvFirst[1]) 3
key count
kvRDD1.countByKey()
defaultdict(int, {1: 1, 3: 2, 5: 1})
create key-value map –>collectAsMap
KV=kvRDD1.collectAsMap()
KV {1: 2, 3: 6, 5: 6} print(type(KV))
print(KV[3])
<class 'dict'> 6
input key to get value
kvRDD1.lookup(3) [4, 6]
RDD的基本命令的更多相关文章
- Spark RDD 核心总结
摘要: 1.RDD的五大属性 1.1 partitions(分区) 1.2 partitioner(分区方法) 1.3 dependencies(依赖关系) 1.4 compute(获取分区迭代列表) ...
- Spark笔记:复杂RDD的API的理解(下)
本篇接着谈谈那些稍微复杂的API. 1) flatMapValues:针对Pair RDD中的每个值应用一个返回迭代器的函数,然后对返回的每个元素都生成一个对应原键的键值对记录 这个方法我最开始接 ...
- Spark笔记:复杂RDD的API的理解(上)
本篇接着讲解RDD的API,讲解那些不是很容易理解的API,同时本篇文章还将展示如何将外部的函数引入到RDD的API里使用,最后通过对RDD的API深入学习,我们还讲讲一些和RDD开发相关的scala ...
- Spark笔记:RDD基本操作(下)
上一篇里我提到可以把RDD当作一个数组,这样我们在学习spark的API时候很多问题就能很好理解了.上篇文章里的API也都是基于RDD是数组的数据模型而进行操作的. Spark是一个计算框架,是对ma ...
- Spark笔记:RDD基本操作(上)
本文主要是讲解spark里RDD的基础操作.RDD是spark特有的数据模型,谈到RDD就会提到什么弹性分布式数据集,什么有向无环图,本文暂时不去展开这些高深概念,在阅读本文时候,大家可以就把RDD当 ...
- Spark核心——RDD
Spark中最核心的概念为RDD(Resilient Distributed DataSets)中文为:弹性分布式数据集,RDD为对分布式内存对象的 抽象它表示一个被分区不可变且能并行操作的数据集:R ...
- 【原】Learning Spark (Python版) 学习笔记(一)----RDD 基本概念与命令
<Learning Spark>这本书算是Spark入门的必读书了,中文版是<Spark快速大数据分析>,不过豆瓣书评很有意思的是,英文原版评分7.4,评论都说入门而已深入不足 ...
- Spark Rdd coalesce()方法和repartition()方法
在Spark的Rdd中,Rdd是分区的. 有时候需要重新设置Rdd的分区数量,比如Rdd的分区中,Rdd分区比较多,但是每个Rdd的数据量比较小,需要设置一个比较合理的分区.或者需要把Rdd的分区数量 ...
- RDD/Dataset/DataFrame互转
1.RDD -> Dataset val ds = rdd.toDS() 2.RDD -> DataFrame val df = spark.read.json(rdd) 3.Datase ...
随机推荐
- Web前端静态页面示例
目录结构: Web25\ |—css\ reset.css.common.css.index.css.login.css.reg.css |—js\ jquery-3.3.1.js.index.js. ...
- 一个抓取智联招聘数据并存入表格的python爬虫
talk is cheap...show you the code..... import requests import lxml,time,os from bs4 import Beautiful ...
- Python浅拷贝copy()与深拷贝deepcopy()区别
其实呢,浅拷贝copy()与深拷贝deepcopy()之间的区分必须要涉及到python对于数据的存储方式. 首先直接上结论: —–我们寻常意义的复制就是深复制,即将被复制对象完全再复制一遍作为独立的 ...
- JavaEE JDBC 了解数据库连接池
了解数据库连接池 @author ixenos 数据库连接是有限的资源,如果用户需要离开应用一段时间,那么他占用的连接就不应该保持开放状态: 另一方面,每次查询都获取连接并在随后关闭它的代价也很高. ...
- server中intersect的用法
intersect 就像数学中的交集一样, select nam from tb_table1 intersect select name from tb_table2 查询的是两个数据集的交集 ...
- [vijos1246]文科生的悲哀(二)
[vijos1246]文科生的悲哀(二) 试题描述 化学不及格的Matrix67无奈选择了文科.他必须硬着头皮艰难地进行着文科的学习. 这学期的政治.历史和地理课本各有n章.每一科的教学必须按章节从前 ...
- [HDU4417]Super Mario(主席树+离散化)
传送门 又是一道主席树模板题,注意数组从0开始,还有主席树耗费空间很大,数组开大点,之前开小了莫名其妙TLE.QAQ ——代码 #include <cstdio> #include < ...
- MS SQLServer Update语法和实例
最常用的update语法是: 1 2 UPDATE TABLE_NAME SET column_name1 = VALUE WHRER column_name2 = VALUE 如果我的更新值Valu ...
- 【收藏】实战Nginx与PHP(FastCGI)的安装、配置与优化
拜读南非蚂蚁大牛的文章真是有所收获 http://ixdba.blog.51cto.com/2895551/806622 一.什么是 FastCGI FastCGI是一个可伸缩地.高速地在HTTP s ...
- Codeforces917C. Pollywog
$n \leq 1e8$个石头,$x \leq 8$个蝌蚪一开始在最左边$x$个石子,要跳到最右的$x$个,每次只能最左边的蝌蚪跳一次,一个石头不能站两个蝌蚪,跳可以跳$1到k,x \leq k \l ...