zoukankan      html  css  js  c++  java
  • [Spark]-Join方式的实现

    对于Spark来说,有3种Join的实现方式

      Broadcast Hash Join

      Shuffle Hash Join

      Sort Merge Join

      Broadcast Hash Join和Shuffle Hash Join都是hash-join 区别只在于先广播还是先shuffle. Sort Merge Join

      Hash Join

        hash-join 有两个概念 基准表(Build Table)与探测表(Probe Table). 整个hash-join的流程如下

          决定两表关联中,谁作为基准表,谁作为探测表(通常情况下小表作为基准表,大表作为探测表)

          然后依次读取基准表,将基准表的连接键取hash(键hash值,键值)放入内存中(内存不够会溢出到磁盘),作为hash-table

          然后依次读取探测表,取基准表的连接键取hash,查看hash-table中键hash值是否存在,如果存在则比较键值是否相等,如果仍然相等,则两条记录匹配上了

        这里可以看出

          hash-join正常情况下效率是非常高的,因为这已非常接近最优解 O(n)+O(m)了

          hash-join适合至少有一个小表的情况下,否则构建的hash-table容易溢出到磁盘

      Sort Merge Join    

        Sort-Merge-Join的处理核心是先排序,先将两张表都按照连接键排序

        未完

      参考 https://www.cnblogs.com/0xcafedaddy/p/7614299.html

  • 相关阅读:
    如何检测死锁并快速定位死锁位置
    几种线程本地存储变量和普通变量的性能比较
    multi_index_container性能测试
    [高并发引擎]定时器模块
    [高并发引擎]Log模块
    静态博客教程 1:hexo + github
    蛇形填数
    实现简单的 ls 命令
    静态库与动态库的创建和使用
    用两个栈实现队列
  • 原文地址:https://www.cnblogs.com/NightPxy/p/9256580.html
Copyright © 2011-2022 走看看