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的基本命令的更多相关文章

  1. Spark RDD 核心总结

    摘要: 1.RDD的五大属性 1.1 partitions(分区) 1.2 partitioner(分区方法) 1.3 dependencies(依赖关系) 1.4 compute(获取分区迭代列表) ...

  2. Spark笔记:复杂RDD的API的理解(下)

    本篇接着谈谈那些稍微复杂的API. 1)   flatMapValues:针对Pair RDD中的每个值应用一个返回迭代器的函数,然后对返回的每个元素都生成一个对应原键的键值对记录 这个方法我最开始接 ...

  3. Spark笔记:复杂RDD的API的理解(上)

    本篇接着讲解RDD的API,讲解那些不是很容易理解的API,同时本篇文章还将展示如何将外部的函数引入到RDD的API里使用,最后通过对RDD的API深入学习,我们还讲讲一些和RDD开发相关的scala ...

  4. Spark笔记:RDD基本操作(下)

    上一篇里我提到可以把RDD当作一个数组,这样我们在学习spark的API时候很多问题就能很好理解了.上篇文章里的API也都是基于RDD是数组的数据模型而进行操作的. Spark是一个计算框架,是对ma ...

  5. Spark笔记:RDD基本操作(上)

    本文主要是讲解spark里RDD的基础操作.RDD是spark特有的数据模型,谈到RDD就会提到什么弹性分布式数据集,什么有向无环图,本文暂时不去展开这些高深概念,在阅读本文时候,大家可以就把RDD当 ...

  6. Spark核心——RDD

    Spark中最核心的概念为RDD(Resilient Distributed DataSets)中文为:弹性分布式数据集,RDD为对分布式内存对象的 抽象它表示一个被分区不可变且能并行操作的数据集:R ...

  7. 【原】Learning Spark (Python版) 学习笔记(一)----RDD 基本概念与命令

    <Learning Spark>这本书算是Spark入门的必读书了,中文版是<Spark快速大数据分析>,不过豆瓣书评很有意思的是,英文原版评分7.4,评论都说入门而已深入不足 ...

  8. Spark Rdd coalesce()方法和repartition()方法

    在Spark的Rdd中,Rdd是分区的. 有时候需要重新设置Rdd的分区数量,比如Rdd的分区中,Rdd分区比较多,但是每个Rdd的数据量比较小,需要设置一个比较合理的分区.或者需要把Rdd的分区数量 ...

  9. RDD/Dataset/DataFrame互转

    1.RDD -> Dataset val ds = rdd.toDS() 2.RDD -> DataFrame val df = spark.read.json(rdd) 3.Datase ...

随机推荐

  1. WebStorm下载安装

    下载地址:https://www.jetbrains.com/webstorm/ 注册码: http://idea.codebeta.cn

  2. ASP.NET MVC WebAPI请求

    基础: 首先,先创建一个“ASP.NET 空Web应用程序” : 然后添加对 “System.Web.Http” 和 “System.Web.Http.WebHost” 的引用: 再添加对“Syste ...

  3. HDU1002 大数相加

    #include <iostream> #include <iostream> #include <iomanip> #include<string> ...

  4. bzoj 3786 星系探索 dfs+splay

    [BZOJ3786]星系探索 Description 物理学家小C的研究正遇到某个瓶颈. 他正在研究的是一个星系,这个星系中有n个星球,其中有一个主星球(方便起见我们默认其为1号星球),其余的所有星球 ...

  5. CDQ分治模板

    #include<cstdio> #include<algorithm> #include<cstring> #include<cmath> #defi ...

  6. POJ 2391 多源多汇拆点最大流 +flody+二分答案

    题意:在一图中,每个点有俩个属性:现在牛的数量和雨棚大小(下雨时能容纳牛的数量),每个点之间有距离, 给出牛(速度一样)在顶点之间移动所需时间,问最少时间内所有牛都能避雨. 模型分析:多源点去多汇点( ...

  7. HDU 5667 Sequence

    指数有递推式,可以通过矩阵快速幂来求解.再用下面这公式快速幂取模即可. (C是素数) #include<cstdio> #include<cstring> #include&l ...

  8. SVN 学习笔记-高级操作

    所谓高级操作,只是曲高和寡,其实都不怎么用的.但是关键时候,可能会很有用. 这个高级只是针对基本操作而言.有些操作可能也是比较基本的. 清除锁 有时候我们在操作的时候,可能系统崩溃了,或者SVN非正常 ...

  9. tomcat的安装和使用

    1.下载最新的tomcat:https://tomcat.apache.org/download-90.cgi 最新版本9.0.2属于beta版本,就没有必要尝鲜踩坑了 使用8.5.24的稳定版本的二 ...

  10. 暴力破解zip文件

    #coding=utf-8 """ 用户输入-z参数指定要破解的zip文件,输入-d参数输入字典文件,即可暴力破解加密的zip文件 """ ...