查看“PySpark实战:用PySpark建立第一个Spark RDD”的源代码
←
PySpark实战:用PySpark建立第一个Spark RDD
跳转至:
导航
,
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
==何谓RDD== Apache Spark的核心组件的基础就是RDD.所谓的RDD ,即弹性分布式数据集(Resilient Distrbuted Datasets),基于RDD可以实现Apache Spark各个组件在多个计算机组成的集群中进行无缝集成,从而能够在一个应用程序中完成海量数据处理。 ===与MapReduce比较=== RDD 相对于MapReduce来说: *具有更强的计算能力 *中间结果存于内存中,性能更快 ===RDD的本质=== RDD 从本质上说,是一个只读的分区数据集合 Spark相关操作只需操作RDD即可。 一个RDD的不同分区可以保存到Spark集群的不同节点(Work Node)上,从而发挥集群的强大计算能力。 [[文件:python21062801.png|600px]] <nowiki> RDD在计算的时候,每个分区都会起一个task,所以rdd的分区数目决定了总的的task数目。 申请的计算节点(Executor)数目和每个计算节点核数,决定了你同一时刻可以并行执行的task。 比如的RDD有100个分区,那么计算的时候就会生成100个task,你的资源配置为10个计算节点,每个两2个核,同一时刻可以并行的task数目为20,计算这个RDD就需要5个轮次。如果计算资源不变,你有101个task的话,就需要6个轮次,在最后一轮中,只有一个task在执行,其余核都在空转。 如果资源不变,你的RDD只有2个分区,那么同一时刻只有2个task运行,其余18个核空转,造成资源浪费。 这就是在spark调优中,增大RDD分区数目(即增大了task数量),增大任务并行度的做法。</nowiki> ===RDD的特点=== 将数据实际映射到不同的Spark节点上,这从理论上解决了RDD可以处理海量数据的问题 一般来说,RDD具有如下特点: *只能读不能修改:通过转换操作生成一个RDD *分布式存储:一个RDD通过分区可以分布在多台机器上并进行数据处理 *内存计算:将全部或部分数据缓存在内存中,且可在多次计算过程中重用 *具有弹性:当内存不足时,部分数据在磁盘上处理 一般来说,借助RDD,开发人员无须关注底层数据的分布式处理过程如何实现,而只需关注业务逻辑是什么, ===Spark中建立RDD的几种方式=== * 用parallelize方法建立RDD * 用range方法建立RDD * 使用textFile建立RDD * 使用HDFS建立RDD
返回至
PySpark实战:用PySpark建立第一个Spark RDD
。
导航菜单
个人工具
登录
命名空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
导航
首页
最近更改
随机页面
帮助
工具
链入页面
相关更改
特殊页面
页面信息