1 创建RDD

  1. intRDD=sc.parallelize([3,1,2,5,6])
  2. intRDD.collect()
    [4, 2, 3, 6, 7]

2 单RDD转换

(1) MAP

  1. def addone(x):
  2. return (x+1)
  3. intRDD.map(addone).collect()
    [4, 2, 3, 6, 7]
  4.  
  5. intRDD.map(lambda x: x+1).collect()
    [4, 2, 3, 6, 7]
  6.  
  7. stringRDD.map(lambda x:'fruit:'+x).collect()
    ['fruit:Apple', 'fruit:Orange', 'fruit:Banana', 'fruit:Grape', 'fruit:Apple']

(2) filter

  1. 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

  1. intRDD.distinct().collect()
    [1, 5, 2, 6, 3]
    stringRDD.distinct().collect()
    ['Orange', 'Apple', 'Banana', 'Grape']

(4) randomSplit

  1. sRDD=intRDD.randomSplit([0.4,0.6])
  2. sRDD[0].collect()
    [1, 2]
    sRDD[1].collect()
    [3, 5, 6]

(5) groupby

  1. 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])
  2.  
  3. even
    [2, 6]
    odd
    <pyspark.resultiterable.ResultIterable object at 0x7f9ba805d438>

3  多个RDD转换运算

  1. intRDD1=sc.parallelize([3,1,2,5,5])
  2. intRDD2=sc.parallelize([5,6])
  3. 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)]

动作 运算

  1. first() 读取第一项数据
  2. take(2) 取出前两项数据
  3. takeOrdered(3) 从小到大排序,取出前三项数据
  4. takeOrdered(3,key=lambda x:-x) 从大到小排序,取出前三项

统计功能

  1. stats()
  2. min()
  3. max()
  4. stdev()
  5. count()
  6. sum()
  7. mean()

RDD key-value transformation

  1. kvRDD1=sc.parallelize([(3,4),(3,6),(5,6),(1,2)])
  2. kvRDD2=sc.parallelize([(3,8)])
  3.  
  4. kvRDD1.collect()
    [(3, 4), (3, 6), (5, 6), (1, 2)]
    kvRDD2.collect()
    [(3, 8)]

join

  1. kvRDD1.join(kvRDD2).collect()
    [(3, (4, 8)), (3, (6, 8))]

leftOuterJoin

  1. kvRDD1.leftOuterJoin(kvRDD2).collect()
  2.  
  3. [(1, (2, None)), (3, (4, 8)), (3, (6, 8)), (5, (6, None))]

rightOuterJoin

  1. kvRDD1.rightOuterJoin(kvRDD2).collect()
  2.  
  3. [(3, (4, 8)), (3, (6, 8))]

subtractByKey

  1. kvRDD1.subtractByKey(kvRDD2).collect()
  2.  
  3. [(1, 2), (5, 6)]

RDD key-value Action

key-value first

  1. kvFirst=kvRDD1.first()
  2. print(kvFirst[0])
  3. print(kvFirst[1])
  4.  
  5. 3

key count

  1. kvRDD1.countByKey()
  2.  
  3. defaultdict(int, {1: 1, 3: 2, 5: 1})

create key-value map –>collectAsMap

  1. KV=kvRDD1.collectAsMap()
  2. KV
  3.  
  4. {1: 2, 3: 6, 5: 6}
  5.  
  6. print(type(KV))
    print(KV[3])
    <class 'dict'> 6

input key to get value

  1. kvRDD1.lookup(3)
  2.  
  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. 大数据学习——hive的sql练习

    1新建一个数据库 create database db3; 2创建一个外部表 --外部表建表语句示例: create external table student_ext(Sno int,Sname ...

  2. HDU 5469 Antonidas

    Antonidas Time Limit: 4000ms Memory Limit: 65536KB This problem will be judged on HDU. Original ID:  ...

  3. Tao Tao要吃鸡(01背包)

    题目描述 Taotao的电脑带不动绝地求生,所以taotao只能去玩pc版的荒野行动了,和绝地求生一样,游戏人物本身可以携带一定重量m的物品,装备背包之后可以多携带h(h为0代表没有装备背包)重量的东 ...

  4. BigTable

    Bigtable发布于2006年,启发了无数的NoSQL数据库,比如:Cassandra.HBase等等. Cassandra架构中有一半是模仿Bigtable,包括了数据模型.SSTables以及提 ...

  5. POJ 1379 (随机算法)模拟退火

    题目大意: 给定一堆点,找到一个点的位置使这个点到所有点中的最小距离最大 这里数据范围很小,精度要求也不高,我们这里可以利用模拟退火的方法,随机找到下一个点,如果下一个点比当前点优秀就更新当前点 参考 ...

  6. ubuntu使用git的时:Warning: Permanently added the RSA host key for IP address '13.250.177.223' to the list of known hosts.

    1:问题现象: hlp@hlp:~/code/github_code/catch_imooc1$ git push origin master Warning: Permanently added t ...

  7. 通过分析exevc系统调用处理过程来理解Linux内核如何装载和启动一个可执行程序

    前言说明 本篇为网易云课堂Linux内核分析课程的第七周作业,本次作业我们将具体来分析exec*函数对应的系统调用处理过程,来分析Linux内核如何来执行一个可执行程序,由于有一个在网易云课堂共同学习 ...

  8. Hadoop经典书籍资料收藏(35本)转

    原文地址:http://www.hadoopor.com/thread-5128-1-2.html 1."Hadoop.Operations.pdf.zip" http://vdi ...

  9. asterisk 相关数据库配置 使用

    Linux/Unix下ODBC的安装: 先下载最新的unixODBC源码包(http://www.unixodbc.org/unixODBC-2.2.1.tar.gz)放到/usr/local下,然后 ...

  10. 【SQL Server 学习系列】-- ConnectionTimeout、CommandTimeout和BulkCopyTimeout

    1. SqlConnection.ConnectionTimeout获取在尝试建立连接时终止尝试并生成错误之前所等待的时间.单位:秒默认值:15秒设置为0时,表示无限制 2. SqlCommand.C ...