最近一直在学习Spark的RDD编程,学习的过程中经常会踩到很多的坑。归根结底,其实是没有理解好RDD编程其中的原理。

学习的过程中值得注意的小细节(个人的一些偏门理解,帮助自己更好掌握)。

1.RDD中的其中一个元素中含有多个元素,类似一个列表在RDD中充当一个元素时,列表的相关的索引查询,切片操作同样适用。

#省略了前面的引用
array = ["Spark is fast","Hadoop is good"]
rdd1 = sc.parallelize(array)
rdd2 = rdd1.map(lambda x:x.split(" ")  #将rdd1中的每个元素中的内容以空格分隔开,得到[['Spark','is','fast'],['Hadoop','is','good']]
rdd3 = rdd2.map(lambda x:x[0])  #索引返回第0个,得到['Spark','Hadoop']
#rdd3 = rdd2.map(lambda x:x[0:2])
#索引返回第0-1个,得到[['Spark','is'],['Hadoop','is']]

2.利用map函数可以实现RDD生成RDD键值对,换而言之map函数可以实现对现有RDD的数据形态进行改变。

array = ['Spark','Hadoop','python','SQL','Big Data']
rdd1 = sc.parallelize(array)
rdd2 = rdd1.map(lambda x:(x,1))
#rdd2 = [('Spark',1),('Hadoop',1),('python',1),('SQL',1),('Big Data',1)]
rdd3 = rdd2.map(lambda x:x[0])
#rdd3 = ['Spark', 'Hadoop', 'python', 'SQL', 'Big Data']

3.利用filter()函数返回特定的值,可以采取key-value的思维,指定元素中特定值的‘key’,返回所有values。

array = ["Spark is fast","Hadoop is good"]
rdd1 = sc.parallelize(array)
rdd2 = rdd1.map(lambda x:x.split(" ")
rdd3 = rdd2.filter(lambda x:x[0] == 'Spark')
#返回x[0] = 'Spark'的所有值,rdd3=[['Spark', 'is', 'fast']]

4.union()与join(),两者都是合并rdd,但在合并形式上有所不同。

array1 = [('Spark',1),('Hadoop',1)]
array2 = [('Spark',2),('Hadoop',2)]
rdd1 = sc.parallelize(array1)
rdd2 = sc.parallelize(array2)
RDD1 = rdd1.union(rdd2)
#union类似并集,[('Spark',1),('Hadoop',1),('Spark',2),('Hadoop',2)]
RDD2 = rdd1.join(rdd2)
#join是内连接,[('Spark',(1,2)),('Hadoop',(1,2))]

后续的学习中遇到问题,会继续更新。

Spark学习记录:RDD 编程相关推荐

  1. 02、体验Spark shell下RDD编程

    02.体验Spark shell下RDD编程 1.Spark RDD介绍 RDD是Resilient Distributed Dataset,中文翻译是弹性分布式数据集.该类是Spark是核心类成员之 ...

  2. 大数据之spark学习记录二: Spark的安装与上手

    大数据之spark学习记录二: Spark的安装与上手 文章目录 大数据之spark学习记录二: Spark的安装与上手 Spark安装 本地模式 Standalone 模式 基本配置 步骤1: 复制 ...

  3. 【极简spark教程】RDD编程

    目录 入门 RDD编程指引 创建rdd集合,可以将rdd看做是spark分布式环境下的list 读取文件 RDD操作 转换transform:生成了新的RDD 行动action:汇总所有结果返回驱动程 ...

  4. spark 中的RDD编程:基于Java api

    1.RDD介绍: RDD,弹性分布式数据集,即分布式的元素集合.在spark中,对所有数据的操作不外乎是创建RDD.转化已有的RDD以及调用RDD操作进行求值.在这一切的背后,Spark会自动将RDD ...

  5. Spark学习之RDD的概念

    RDD又叫弹性分布式数据集,是Spark数据的基础单元,Spark编程是围绕着在RDD上创建和执行操作来进行的.它们是跨集群进行分区的不可变集合(immutable collection),如果某个分 ...

  6. spark学习-54-Spark RDD的clean()方法

    1.概述 spark里面,大量使用了一个方法, ClosureCleaner.clean() // 这里调用了SparkContext的clean方法// clean方法实际上调用了ClosureCl ...

  7. spark 学习(二) RDD及共享变量

    声明:本文基于spark的programming guide,并融合自己的相关理解整理而成      Spark应用程序总是包括着一个driver program(驱动程序),它运行着用户的main方 ...

  8. python socket编程_Python学习记录-socket编程

    1. OSI七层模型详解 2. Python socket 什么是 Socket? Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答 ...

  9. spark期末大作业RDD编程初级实践

    1.需求描述 本次实验需要:系统:linux unbuntu14.04,处理器:至少需要两个处器,一个内核,内存:至少4G,硬盘空间:大小需要20GB.Hadoop:2.7.1以上版本,JDK:1.8 ...

  10. Learning Spark中文版--第三章--RDD编程(1)

       本章介绍了Spark用于数据处理的核心抽象概念,具有弹性的分布式数据集(RDD).一个RDD仅仅是一个分布式的元素集合.在Spark中,所有工作都表示为创建新的RDDs.转换现有的RDD,或者调 ...

最新文章

  1. 在word、excel中如果运用VBA进行编程?
  2. LeetCode 1242. Web Crawler Multithreaded--Java 解法--网路爬虫并发系列--ConcurrentHashMap/Collections.synchroni
  3. VIM之Project 项目管理工具
  4. 874. 模拟行走机器人
  5. (10)System Verilog 关联数组
  6. 华为交换机eth口作用_华为交换机口如何绑定端口号
  7. 语音识别人工智能解决方案
  8. 第二把数独游戏 代码
  9. Hinduja Global Solutions借助OpManager一年节省300万美元
  10. 计算机网络第七版谢希仁课后答案第三章(部分答案)
  11. 《Using OpenRefine》翻译~8
  12. 学术会议 Rebuttal 模板
  13. 1、马克思主义哲学是科学的世界观和方法论
  14. 建造者模式(二):游戏角色设计的建造者模式解决方案
  15. mixamo_Mixamo的动画商店插件现在支持Mecanim!
  16. VMX(2) -- VMCS理解
  17. 【阿里云2020校招提前批】中间件核心部门疯狂直推中!
  18. 从阿里 Weex 一窥移动技术发展之路
  19. 计算机二级证书有用吗计算机专业,考计算机二级证书有用吗
  20. 申請@msn.com帳號

热门文章

  1. 新浪微博大v博客信息抓取与活跃度清博指数BCI分析Python
  2. 蚁景网络安全渗透测试工程师特训班学习记录
  3. 金蝶生成凭证模板_软件-金蝶外购入库凭证模版
  4. mysql +cobar_数据库中间件Cobar功能探究
  5. 两大虚拟桌面厂商的系统镜像管理对比
  6. 苹果商店打不开怎么办_苹果手机迅雷版,iOS迅雷Beta内测版企业版安装下载
  7. android电话本导入iphone,如何将Android电话簿导入iPhone手机
  8. 什么是软件研发费用定额?
  9. Delphi语言基础
  10. oracle分析函数结构,oracle之分析函数解析及其应用场景