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

网站建设品/网站seo重庆

网站建设品,网站seo重庆,江苏省网站备案系统,安庆网站建设推荐安徽秒搜科技许多转换操作需要在集群中shuffle数据,包括join,各种ByKey等。所有这些操作都很消耗性能,因为它们可能需要对整个数据集进行shuffle,排序以及重新分区。 但是有一个小技巧可以提高性能,即预分区。如果rdd已分区&#…

许多转换操作需要在集群中shuffle数据,包括join,各种ByKey等。所有这些操作都很消耗性能,因为它们可能需要对整个数据集进行shuffle,排序以及重新分区。

但是有一个小技巧可以提高性能,即预分区。如果rdd已分区,就能避免数据shuffle,因为假设rdd已分区,那么特定的键值就会在同一个分区内,因此能在本机进行处理,这种方式就不需要通过网络做数据shuffle了。

val partitionRDD = pairRDD.partitionBy(new HashPartitioner(3))
val joinedRDD = partitionRDD.join(otherRDD)

已分区的RDD将分区器传给生成的RDD,这个RDD将在worker中进行本机处理,只有那个未分区RDD需要排序,并装载到合适的节点。可进一步优化如下:

val partitionRDD = pairRDD.partitionBy(new HashPartitioner(3))
val otherRDD = partitionedRDD.mapValues(value => value + 1)
val joinedRDD = partitionedRDD.join(ohterRDD)

在python中数据重新混洗分区

partitionedRDD = rdd.repartition(n) #n 是重新分区的数量,这会造成数据重新混洗
#如果要减少分区,则coalesce比repartition 更高效,因为coalesce 没有打乱数据
partitionedRDD = rdd.coalesce(n)

SPARK 分区器:目前有两种内置的分区器 HashPartitioner 和 RangePartitioner,默认选择方式是:
1.当任何输入的RDD用到了某一分区器,输出的RDD也会用此分区器

2.否则,在Pair RDD情形下,默认使用 HashPartitioner

HashPartitioner 基于键(key)的哈希吗(hash code)把值分布到各个分区上。通过计算键的哈希码与分区数的模,得到分区索引值,在计算中也需要考虑到哈希码的正负情况。
RangePartitioner 根据范围对可排序项进行分区。对RDD 内容进行取样能决定大致的范围区间,最终的分区数可能要小于配置的分区数。分区数至少应当等于集群分配给应用程序的cpu核心数,建议设为cpu数的 2 - 4 倍。
也可以自定义分区器

注:有一些操作比如 map,flatMap 也会影响分区,在map操作中,可以改变一个PairRDD中的键,这样分区就会发生变化。这种情况下,生成的RDD将设有分区集。可以用mapValues 以及 faltMapValues 处理以及保留分区器。

shuffle数据:shuffle过程严重影响性能是因为它涉及数据排序,重分区,网络传输时的序列化和反序列化,为减少I/O带宽及磁盘I/O操作,还要对数据进行压缩。在spark中,可以引入中间的merge阶段输出少一点但大一些的文件。这个阶段就叫做shuffle文件合并。所有运行在相同cpu核上的map任务都将输出相同的shuffle文件。要启动shuffle文件合并,必须把spark.shuffle.consolidateFiles 设置为 true

在python 中不能将 HashPartitioner 对象传递给partitionBy,只需要把需要的分区数传递过去

pairRDD.partitionBy(100)   #100分区

算子与shuffle:
groupByKey : 特定键的所有值必须在一个任务中进行处理。为达到这个目的,整个数据被shuffle,特定键的所有单词被发送到一个节点。
reduceByKey : 算子先被应用到单台机器上的一个键的全部值,处理后得到的中间结果随后会在集群中发送。性能比groupByKey 更好些。

aggregateByKey : 用法其实跟combineByKey 是一样的,其实aggregateByKey 内部是通过调用 combineByKey 实现的。唯一不同在于aggregateByKey 通过创造零值替代 combineByKey 中的第一个函数 createCombiner。aggregateByKey 避免了创建大量的对象,同时省略了额外的map转换步骤,所以相对 reduceByKey 来说又更高效一些。

http://www.lbrq.cn/news/1343413.html

相关文章:

  • 专业网站设计/软文写作的技巧
  • 建设什么网站/灰色关键词代发可测试
  • 电子邮箱注册网站申请/网络站点推广的方法有哪些
  • 学校网站怎么做的好坏/网站测速工具
  • 包包网站建设策划书/友链价格
  • 网站开发报价表/百度收录的网站
  • 一个asp网站的mdb数据库修改/建站公司排名
  • so域名网站/国家高新技术企业
  • 网站设计自学/广告代理公司
  • 网站建设的7种流程图/高端营销型网站建设
  • 评析政府网站的建设/营销软文范例500
  • 做翻译赚钱的网站好/百度上怎么做推广
  • 建设网站需要了解些什么/济南网络seo公司
  • 咸宁网站建设/他达拉非
  • 深圳网站制作价格/实体店营销方案
  • 网站开发转移合同/网站建设网络推广平台
  • wordpress文字大小/优化电脑的软件有哪些
  • 动态网站开发代码/网站怎么优化seo
  • 中国电信网站备案 密码重置/百度贴吧入口
  • 手机网站网页设计/网络推广竞价外包
  • 衡水做wap网站费用/北京seo优化外包
  • 做a的视频在线观看网站/网络广告投放公司
  • seo网站诊断方案/搜索引擎优化
  • 网站建设协议/免费建站工具
  • angularjs网站模板/东莞免费建站公司
  • 网站设计就业怎么样/百度推广和优化哪个好
  • 网站可以在手机上做吗/免费模板
  • vue做网站对seo/2024年新冠疫情最新消息
  • 宁波最靠谱的网站建设/北京网站seo招聘
  • 企业vi手册范本/沈阳百度seo
  • MyBatis进阶:动态SQL、多表查询、分页查询
  • 【面试场景题】异地多活改造方案
  • 【Linux | 网络】数据链路层
  • C语言指针完全指南:从入门到精通
  • Kotlin初体验
  • MoVA:多模态视觉专家混合架构的创新设计与应用实践