Spark学习记录:RDD 编程
最近一直在学习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 编程相关推荐
- 02、体验Spark shell下RDD编程
02.体验Spark shell下RDD编程 1.Spark RDD介绍 RDD是Resilient Distributed Dataset,中文翻译是弹性分布式数据集.该类是Spark是核心类成员之 ...
- 大数据之spark学习记录二: Spark的安装与上手
大数据之spark学习记录二: Spark的安装与上手 文章目录 大数据之spark学习记录二: Spark的安装与上手 Spark安装 本地模式 Standalone 模式 基本配置 步骤1: 复制 ...
- 【极简spark教程】RDD编程
目录 入门 RDD编程指引 创建rdd集合,可以将rdd看做是spark分布式环境下的list 读取文件 RDD操作 转换transform:生成了新的RDD 行动action:汇总所有结果返回驱动程 ...
- spark 中的RDD编程:基于Java api
1.RDD介绍: RDD,弹性分布式数据集,即分布式的元素集合.在spark中,对所有数据的操作不外乎是创建RDD.转化已有的RDD以及调用RDD操作进行求值.在这一切的背后,Spark会自动将RDD ...
- Spark学习之RDD的概念
RDD又叫弹性分布式数据集,是Spark数据的基础单元,Spark编程是围绕着在RDD上创建和执行操作来进行的.它们是跨集群进行分区的不可变集合(immutable collection),如果某个分 ...
- spark学习-54-Spark RDD的clean()方法
1.概述 spark里面,大量使用了一个方法, ClosureCleaner.clean() // 这里调用了SparkContext的clean方法// clean方法实际上调用了ClosureCl ...
- spark 学习(二) RDD及共享变量
声明:本文基于spark的programming guide,并融合自己的相关理解整理而成 Spark应用程序总是包括着一个driver program(驱动程序),它运行着用户的main方 ...
- python socket编程_Python学习记录-socket编程
1. OSI七层模型详解 2. Python socket 什么是 Socket? Socket又称"套接字",应用程序通常通过"套接字"向网络发出请求或者应答 ...
- spark期末大作业RDD编程初级实践
1.需求描述 本次实验需要:系统:linux unbuntu14.04,处理器:至少需要两个处器,一个内核,内存:至少4G,硬盘空间:大小需要20GB.Hadoop:2.7.1以上版本,JDK:1.8 ...
- Learning Spark中文版--第三章--RDD编程(1)
本章介绍了Spark用于数据处理的核心抽象概念,具有弹性的分布式数据集(RDD).一个RDD仅仅是一个分布式的元素集合.在Spark中,所有工作都表示为创建新的RDDs.转换现有的RDD,或者调 ...
最新文章
- 在word、excel中如果运用VBA进行编程?
- LeetCode 1242. Web Crawler Multithreaded--Java 解法--网路爬虫并发系列--ConcurrentHashMap/Collections.synchroni
- VIM之Project 项目管理工具
- 874. 模拟行走机器人
- (10)System Verilog 关联数组
- 华为交换机eth口作用_华为交换机口如何绑定端口号
- 语音识别人工智能解决方案
- 第二把数独游戏 代码
- Hinduja Global Solutions借助OpManager一年节省300万美元
- 计算机网络第七版谢希仁课后答案第三章(部分答案)
- 《Using OpenRefine》翻译~8
- 学术会议 Rebuttal 模板
- 1、马克思主义哲学是科学的世界观和方法论
- 建造者模式(二):游戏角色设计的建造者模式解决方案
- mixamo_Mixamo的动画商店插件现在支持Mecanim!
- VMX(2) -- VMCS理解
- 【阿里云2020校招提前批】中间件核心部门疯狂直推中!
- 从阿里 Weex 一窥移动技术发展之路
- 计算机二级证书有用吗计算机专业,考计算机二级证书有用吗
- 申請@msn.com帳號