美文网首页
Hive-Spark-Flink 大表join小表处理方式

Hive-Spark-Flink 大表join小表处理方式

作者: Eqo | 来源:发表于2022-09-04 09:54 被阅读0次

在大数据离线批处理中,需求【大表(事实表)与小表(维度表)】关联字段,进行分析

Hive 默认开启Map端Join

  • 将小表数据加载到 Hash table file中 分布式缓存,每个task 都有一份

  • 将小表数据放到文件中


  • 过程:

  1. 先加载小表数据 存储到Hash table文件中
    2.将文件中的数据 存放到分布式缓存中
    3.大表中的每个task从分布式缓存中拉取数据
    MapJoin只有maptask 没有reduceTask 没有shuffle 提高了性能

Spark Broadcast Join

  • spark采用 广播join 将小表数据放到hash集合中, 广播到executor内存中,被该executor中的task共享,该小表只能读不能写

  • 将小表数据放到 变量中


  • 开启


    image.png

spark.sql.autoBroadcastJoinThreshold 值为-1

Flink

两种方式 广播变量 和 分布式缓存

  • 广播变量 :==将数据(封装到DataSet)广播到TaskManager==上就可以==供TaskManager中的SubTask/task==去使用,数据在内存中
  • 分布式缓存:缓存数据文件数据,数据放在文件中;

相关文章

网友评论

      本文标题:Hive-Spark-Flink 大表join小表处理方式

      本文链接:https://www.haomeiwen.com/subject/oitpgrtx.html