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

定制网站成本多少咋建网站

定制网站成本多少,咋建网站,做二手的网站都有哪些,新媒体配图的相关知识Spark中的JOIN机制 1、Hash Join概述2、影响JOIN的因素3、Spark中的JOIN机制3.1、Shuffle Hash Join3.2、Broadcast Hash Join3.3、Sort Merge Join3.4、Cartesian Product Join3.5、Broadcast Nested Loop Join4、Spark中的JOIN策略5、Spark JOIN机制与策略总结5.1、Spark中的…

Spark中的JOIN机制

    • 1、Hash Join概述
    • 2、影响JOIN的因素
    • 3、Spark中的JOIN机制
      • 3.1、Shuffle Hash Join
      • 3.2、Broadcast Hash Join
      • 3.3、Sort Merge Join
      • 3.4、Cartesian Product Join
      • 3.5、Broadcast Nested Loop Join
    • 4、Spark中的JOIN策略
    • 5、Spark JOIN机制与策略总结
      • 5.1、Spark中的JOIN机制与策略总结
      • 5.2、Broadcast Hash Join与Broadcast Nested Loop Join的区别




1、Hash Join概述


Apache Spark共提供了五种JOIN机制,其中常用的有三种:Shuffle Hash Join、Broadcast Hash Join及Sort Merge Join,它们都基于Hash Join,只不过需要在Hash Join前后进行Shuffle、Broadcast或Sort

实际上,Hash Join算法来自于传统数据库,而Shuffle、Broadcast和Sort是大数据(数据仓库)在分布式场景下两者结合的产物。因此,我们也说大数据(数据仓库)是由传统数据库发展而来的

通常情况下,Hash Join使用两个表中较小的表在内存中建立以Join Key为Key的哈希/散列表(Hash Table),然后扫描较大的表,同样对大表Join Key进行Hash后探测哈希/散列表,找出与哈希/散列表匹配的行

Hash Join主要分为两个阶段:建立阶段(Build Phase)和探测阶段(Probe Phase)

  • Bulid Phase:较小的表被构建成以Join Key为Key的Hash Table,较小的表也称Build Table
  • Probe Phase:扫描较大表的行并计算Join Key的哈希值,与Build Table哈希表比对,若相同则进行JOIN,较大的表也称Probe Table

值得注意的是,Hash Join适用于较小的表完全可以放于内存的情况,如果表较大,无法构造在内存中,则优化器会将它分成若干个Partition,将不能放入内存的部分写入磁盘,此时会多一个写的代价,I/O性能差

Apache Spark将参与JOIN的两张表抽象为流式遍历表(StreamIter)和查找表(BuildIter),通常StreamIter为大表,BuildIter为小表,这是由Spark根据JOIN策略自动决定的。对于每条来自StreamIter的记录,都要去BuildIter中查找匹配的记录

2、影响JOIN的因素


影响JOIN性能和JOIN结果的因素主要包括:数据集的大小、JOIN的连接条件以及JOIN的连接类型

1)数据集的大小

参与JOIN的数据集大小会直接影响JOIN操作的执行效率。同样,也会影响Spark JOIN机制的选择

2)JOIN的连接条件

JOIN的条件涉及字段之间的逻辑比较关系。根据JOIN的条件,JOIN可分为两大类:等值连接和非等值连接

  • 等值连接:涉及字段之间一个或多个必须同时满足的相等条件(运算连接符为=
  • 非等值连接:涉及字段之间一个或多个必须同时满足的非相等条件(运算连接符不为=

3)JOIN的连接类型

在输入数据集的记录之间应用连接条件之后,JOIN类型会影响JOIN操作的结果。Spark主要有以下几种JOIN类型:

  • 内连接(Inner Join:返回连接条件都匹配的记录
  • 外连接(Outer Join:分为左外连接、右外链接和全外连接
  • 交叉连接(Cross Join:交叉连接返回两个表的笛卡尔乘积
  • 半/反连接(Semi/Anti Join:返回匹配/不匹配右表的左表数据

3、Spark中的JOIN机制


Spark共提供了五种JOIN机制来执行具体的JOIN操作:

  • Shuffle Hash Join
  • Broadcast Hash Join
  • Sort Merge Join
  • Cartesian Product Join
  • Broadcast Nested Loop Join

3.1、Shuffle Hash Join


当要JOIN的表数据量较大时,一般选择Shuffle Hash Join。这样可以将大表按照Join Key进行重分区,保证每个相同的Join Key都发送到同一个分区中

在这里插入图片描述
Shuffle Hash Join的基本步骤如下:

  • Shuffle阶段:对于两张参与JOIN的表,分别根据Join Key进行重分区,该过程会涉及Shuffle,保证Join Key值相同的记录被分到同一个分区
  • Hash Join阶段:对于每个Shuffle Read分区,会将分区中较小表(BuildIter)构建成一个Hash Table放入内存,然后根据Join Key与较大的表记录进行匹配

Shuffle Hash Join的条件与特点如下:

  • BuildIter的总体估计大小超过spark.sql.autoBroadcastJoinThreshold(default 10MB)设置的值,即不满足Broadcast Hash Join条件
  • 仅支持等值连接,且参数spark.sql.join.preferSortMergeJoin(default true)需要设置为false,即不满足Sort Merge Join条件(Join Key不需要排序)
  • 支持除了全外连接(Full Outer Join)外的所有JOIN类型,对于Full Outer Join,需要建立双向Hash Table,代价太大,因此Full Outer Join默认都是基于Sort Merge Join来实现
  • 需要对小表构建Hash Table,属于内存密集型操作,如果构建Hash Table的一侧数据较大,可能会造成数据倾斜和OOM
  • StreamIter的大小是BuildIter的三倍以上

Shuffle Hash Join:Shuffle会带来较多的网络I/O开销,因此性能较差。同时,在Executor的内存使用方面,如果Executor的数量足够多,每个分区处理的数据量可以控制到比较小

3.2、Broadcast H

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

相关文章:

  • ps网站轮播图怎么做的wordpress 登录菜单
  • 米拓cms可以做企业网站吗做网站的公司一般怎么培训销售
  • html网页设计论文2000字wordpress插件带seo
  • 跨境电商网站设计海口企业自助建站系统
  • 莱西市建设局网站如何在阿里云上做网站
  • 公司网站招聘费如何做会计分录想开网店不知道怎么开
  • 网站特色胶州网站制作
  • php网站开发的成功经历怎么做一淘宝客网站
  • 保定免费建站服务苏州园区一站式服务中心
  • wp如何做网站地图重庆谷歌seo关键词优化
  • 免费注册发布信息网站怎么做全网小说网站
  • 网站创建方案论文烟台网站建设优惠臻动传媒
  • 杭州市拱墅区网站建设代发百度首页排名
  • 网站建设公司相关资质购物网站开发技术
  • 网站备案在哪里查询网站开发项目流程书
  • 功能性质网站有哪些网站响应式地方网站
  • 成都优创智汇网站建设漯河网站建设费用
  • 网站放视频代码沈阳建设银行网站
  • 网站服务器租用报价seo网站搜索优化
  • 团购网站建站做网站加入广告联盟
  • 关键词排名网站建设银行网站修改密码
  • 网站站点地图设计老铁seo外链工具
  • 网站wordpress入侵万能证在线制作生成器
  • asp.net网站建设教程深圳建站公司的小技巧
  • 上海高端网站建设定制合肥网站设计制作
  • 平顶山住房和城乡建设局网站室内设计公司创业计划书
  • 手机资讯网站源码网站怎样制作
  • 博客网站开发思维导图上海网站建设开发哪
  • 数据库和网站开发网页设计实训总结1500字
  • 清远医疗网站建设免费简历模板可导出