当前位置: 首页 > news >正文

免费的域名和网站欧赛科技网站建设

免费的域名和网站,欧赛科技网站建设,网页源代码翻译,聚名网是什么平台一、sortByKey SortByKey是一个transformation算子,但是会触发action,因为在sortByKey方法内部,会对每个分区进行采样,构建分区规则(RangePartitioner)。 内部执行流程 1、创建RangePartitioner part&…

一、sortByKey

  SortByKey是一个transformation算子,但是会触发action,因为在sortByKey方法内部,会对每个分区进行采样,构建分区规则(RangePartitioner)。

内部执行流程

1、创建RangePartitioner part,用于构建分区规则。

  Part可以根据指定的分区数量和排序方式,确定每个下游分区的上界,并为每个key分配正确的分区编号。数据在shuffle到本地磁盘的过程中,会记录目标分区的信息,确保下游分区能够正确拉取对应分区的数据。

2、根据part创建ShuffleRDD,对原始RDD按key重新分区。

3、shuffle到本地磁盘的临时文件(包含数据文件和索引文件)。

4、下游分区拉取对应分区的数据。

RangePatitioner工作原理

(1)确定下游每个分区的上界。

  对每个上游分区采样,确定数据的大致范围,再根据传入的分区数或者默认分区数确定分区边界。

(2)将rdd中的每个key调用getPartition函数,从而获取其应归属的分区。

①若目标分区数较小(128),采用线性查找;
②若超过128,采用二分查找:
  如果键小于范围的最小界限,它将分配到第一个分区。
  如果键大于所有范围界限,它将分配到最后一个分区。
  对于在某个范围中间的键,getPartition 使用二分查找方法找到合适的分区。这里根据范围边界数组 (rangeBounds) 和键值(k)进行比较,返回对应的分区索引。

二、join

内部执行流程

1、接收其他RDD作为参数

  默认使用当前有效的最大分区器,如果没有,新建一个HashPartitioner作为分区器。

2、将具有相同key的value进行联结(cogroup)

  (返回一个二元组(K, (Iterable[V1], Iterable[V2]))),若某个rdd没有该key对应的value,Iterable为空。

3、将每个key对应的两个Iterator中的元素进行笛卡尔积,每一对结果作为新的value,与key组成新的二元组返回。

三、map & mapPartitions & mapPartitionsWithIndex & flatMap

1、map

内部执行流程

(1)将函数作为参数传入;
(2)对f删除不必要的引用,检查是否能够被序列化,是否存在闭包问题;
(3)创建一个MapPartitionsRDD,将每个迭代器执行 f 的逻辑后返回。

特点

(1)每处理一条数据,就调用一次f,每一条数据都是一个迭代器。
(2)无法直接得知分区编号,但是可以通过如下方式获取:

val index = TaskContext.getPartitionId()

(3)返回迭代器。

2、mapPartitions

特点

(1)以分区为单位对数据调用f,一个分区就是一个迭代器。
(2)返回迭代器和partitioner。

3、mapPartitionsWithIndex

特点

(1)以分区为单位对数据调用f,一个分区就是一个迭代器。
(2)返回分区编号和迭代器

4、flatMap

  通过TraversableOnce特征,逐个处理rdd中的每个元素,然后将处理过的元素组成新的rdd返回。

四、groupByKey & groupBy

1、groupByKey (k, CompactBuffer(v,v,v,v) )

内部执行流程

1、调用 combineByKeyWithClassTag将所有相同的key合并到CompactBuffer中,并根据指定的partitioner进行分组;
2、返回一个新的rdd,每个key 对应的value被聚合成一个CompactBuffer;
3、将合并后的rdd转换为RDD[(K, Iterable[V])]]。

partitioner为HashPartitioner

  可以看到,HashPartitioner为key分配新分区号的方式是key的hashCode值 % 下游分区数,这意味着相同key的数据一定会被分配到同一台机器的同一个partition的同一个组里面。

2、groupBy ( k, CompactBuffer( (k,v),(k,v),(k,v),(k,v) ) )

内部执行流程

1、将f函数作为参数传入;
2、对f删除不必要的引用,检查是否能够被序列化,是否存在闭包问题;
3、将rdd的每个元素调用f后的值作为key,元素本身作为value,得到的二元组调用groupByKey进行分组。

  源rdd在Driver端被创建和调用,对rdd进行操作,本质上是对rdd的每个partition进行操作,而每个partition对应一个task,task就会对这个partition对应的Iterator进行相应的操作。
  算子被调用,真正执行时会调用compute方法。真正执行具体是指task被分配到executor的线程池中时,compute方法被iterator调用。

3、groupBy VS groupByKey

  groupBy更灵活,但在shuffle时传输的数据更多(groupBy返回 ( k, CompactBuffer( (k,v),(k,v),(k,v),(k,v) ) );而groupByKey返回 (k, CompactBuffer(v,v,v,v) ) )。

五、reduceByKey & combinByKey

1、reduceByKey

内部执行流程

1、调用 combineByKeyWithClassTag,将分区内相同key的value应用传入的函数,再将分区间相同key的value应用同一个传入的函数;
2、返回一个新的rdd。

2、combineByKey


  combineByKey的内部执行流程与reduceByKey是一样的,唯一不同的是combineByKey分区间应用的函数与分区内应用的函数不同。

3、性能分析

ReduceByKey VS CombineByKey

  combineByKey更灵活,因为其支持分别指定分区内和分区间的聚合逻辑,而reduceByKey分区内和分区间使用一样的聚合逻辑。

reduceByKey VS groupByKey

  reduceByKey的效率更高,因为reduceByKey在map端会进行局部聚合,因此在shuffle时传输的数据更少。

六、foldByKey & aggregateByKey

1、foldByKey

内部执行流程

(1)调用 combineByKeyWithClassTag,先将初始值应用函数,再将分区内相同key的value应用传入的函数,最后将分区间相同key的value应用同一个传入的函数;
(2)返回一个新的rdd。

2、aggregateByKey


  foldByKey 的内部执行流程与 aggregateByKey 是一样的,唯一不同的是 aggregateByKey 分区间应用的函数与分区内应用的函数不同。

3、foldByKey 与 aggregateByKey的区别

  foldByKey局部和全局使用相同的聚合逻辑;aggregateByKey局部和全局使用不同的聚合逻辑。

http://www.yayakq.cn/news/964979/

相关文章:

  • 外国做问卷可以赚钱的网站高校网站建设意义
  • 怎样在百度上建网站网络推广app是违法的吗
  • wordpress导航栏该怎么设置seo关键词排名优化评价
  • 本地拖拽网站建设网站风格类型
  • 公司想做个网站应该怎么做洛阳微信网站建设
  • 河间网站制作中小网站公司做的推广怎么样
  • ftp怎么连接网站空间电子商务公司起名
  • 利用h5网站做app菜单网站图片素材
  • 战鼓网这种网站怎么做创建官方网站
  • 建程网app下载深圳网站制作搜行者seo
  • 用asp做网站怎么布局室内效果图制作流程
  • 湖南微信网站建设网站底部html代码
  • 公司门户网站建设特点网站可以随便创建么
  • wordpress添加内容在头部快速优化官网
  • 昌平网站建设浩森宇特怎么修改网站源文件
  • 网站系统建设的目标美橙建站十四年
  • 泰州自助建站软件wordpress 主题排行
  • 网站建设在未来的发展趋势公司网站的设计与实现
  • 网站开发资金个人网站设计主题
  • 杭州建设局网站首页 柳公司官网优化
  • 科技作文长春关键词优化排名
  • 建设企业网站首页年报申报入口
  • 服务好的南昌网站制作vi设计品牌案例ppt
  • 创意广告设计网站无忧中英繁企业网站系统通用版
  • 南山最专业的网站建设电子商务网站登录
  • 360网站制作wordpress批量扫描弱口令工具
  • 怎么做网站网页wordpress头像上传插件
  • 上海网站设计制作公司网页制作成品
  • 学生模拟网站开发项目广州智能模板建站
  • pc端网站开发总结wordpress简约自适应主题