栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Spark中为什么需要RDD/DataSet

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Spark中为什么需要RDD/DataSet

没有RDD、Dataset之前,做wordcount或别的大数据计算使用:

原生的python集合:比如python的list、set、map,但是只支持单机版,不支持分布式。如果要做分布式计算,需要做很多额外的工作,比如线程/进程的通信,容错,自动负载均衡。。等很麻烦。所以诞生了框架。

还可以用MapReduce:运行效率低下,开发效率也低下。

诞生了Spark/Flink,参考了原生的scala集合的设计,抽象出了新的数据类型-RDD/Dataset

RDD其实就是分布式集合,支持函数操作。。使用起来跟本地集合一样简单。开发速度快。底层基于分布式内存计算,是MR的100倍。

 

RDD到底是什么

弹性分布式数据集

弹性:【内存】和【CPU】都是可以扩展。中间数据存在【内存】,如果内存不够,可以溢写到【磁盘】

分布式:【存储】和【计算】都是分布式多节点上的

数据集:一个很大的抽象容器,使用起来跟python集合一样简单,支持【函数式】编程。

 

 

核心设计要点

不可变:集合的元素内部都不能改变,但是可以转换成新的集合。

可分区:RDD划分成几个部分区域。

并行计算:每个分区被一个任务处理,各任务并行计算。

源码中记录的RDD的5大特性

有一个分区列表:将【所有的数据】划分成合理的分区数。

计算函数:每个分区的数据上都有【函数】

依赖列表:RDD转换成新的RDD,也记录了依赖关系。

【可选】分区器:当RDD的元素是【键值对】时,可以指定分区器,规定了如何按key来分组到不同的分区中。默认是Hash分区器

【可选】最佳位置:记录了计算的最佳位置(移动代码比移动数据更划算)比如HDFS的block位置。

 

 

RDD的5大特性其实就是说明了:

数据在哪里? 在哪里计算?有哪些分区?使用什么分区器?使用什么函数计算?

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/739422.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号