`
sungyang
  • 浏览: 20145 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

spark join

阅读更多

Spark join有两种方式:map-side join和reduce-side join

1、Map-side Join使用场景是一个大表和一个小表的连接操作,其中,“小表”是指文件足够小,可以加载到内存中。该算法可以将join算子执行在Map端,无需经历shuffle和reduce等阶段,因此效率非常高。

在Hadoop MapReduce中, map-side join是借助DistributedCache实现的。DistributedCache可以帮我们将小文件分发到各个节点的Task工作目录下,这样,我们只需在程序中将文件加载到内存中(比如保存到Map数据结构中),然后借助Mapper的迭代机制,遍历另一个大表中的每一条记录,并查找是否在小表中,如果在则输出,否则跳过。

在Apache Spark中,同样存在类似于DistributedCache的功能,称为“广播变量”(Broadcast variable)。其实现原理与DistributedCache非常类似,但提供了更多的数据/文件广播算法,包括高效的P2P算法,该算法在节点数目非常多的场景下,效率远远好于DistributedCache这种基于HDFS共享存储的方式。使用MapReduce DistributedCache时,用户需要显示地使用File API编写程序从本地读取小表数据,而Spark则不用,它借助Scala语言强大的函数闭包 特性,可以隐藏数据/文件广播过程,让用户编写程序更加简单。

适用于一个数据集小,另一个数据集大的情况。

 

2、Reduce Side Join

当两个文件/目录中的数据非常大,难以将某一个存放到内存中时,Reduce-side Join是一种解决思路。该算法需要通过Map和Reduce两个阶段完成,在Map阶段,将key相同的记录划分给同一个Reduce Task(需标记每条记录的来源,便于在Reduce阶段合并),在Reduce阶段,对key相同的进行合并。

Spark提供了Join算子,可以直接通过该算子实现reduce-side join,但要求RDD中的记录必须是pair,即RDD[KEY, VALUE],

适用于两个join表数据量都很大的情况。

1
0
分享到:
评论

相关推荐

    Spark-2.3.1源码解读

    Spark-2.3.1源码解读。 Spark Core源码阅读 Spark Context 阅读要点 ...Dstream join 操作和 RDD join 操作的区别 PIDController源码赏析及 back pressure 实现思路 Streaming Context重点摘要 checkpoint 必知必会

    Hive on Spark EXPLAIN statement

    Hive on Spark EXPLAIN statement : 讲述了 Common Join / Map join / Bucket Map Join / Sorted Merge Bucket Map Join / skew join 在explain 中的 树结构 。In Hive, command EXPLAIN can be used to show the ...

    Spark Skew Join 的原理及在 eBay 的优化.docx

    Spark Skew Join 的原理及在 eBay 的优化.docx

    SparkSQL–有必要坐下来聊聊Join

    本文来自于范欣欣,本文带大家真正走进Join的世界,了解常用的几种Join算法以及各自的适用场景。Join是数据库查询永远绕不开的话题,传统查询SQL技术总体可以分为简单操作(过滤操作-where、排序操作-limit等),...

    大数据Spark面试题汇总

    12. 介绍一下 join 操作优化经验? 13. 描述 Yarn 执行一个任务的过程? 14. Spark on Yarn 模式有哪些优点? 15. 谈谈你对 container 的理解? 16. Spark 使用 parquet 文件存储格式能带来哪些好处? 17. 介绍 ...

    Spark实时流处理编程指南

    数据可以有许多来源,如Kafka, Flume, Twitter,ZeroMQ或传统TCP套接字,可以使用复杂算法对其处理实现高层次的功能,如map,reduce,join和window。最后,经处理的数据可被输出到文件系统,数据库,和实时仪表盘。事实...

    基于成本的Spark SQL优化器框架

    通过可靠的统计和精确的估算,我们能够在这些领域做出好的决定:选择散列连接(hash join)操作的正确构建端(build side),选择正确的连接算法(如broadcast hash join与 shuffled hash join), 调整连接的顺序...

    Spark实现用户订单数据表连接

    Spark实现用户订单数据表连接,实现了用户信息表和订单信息表的内连接操作

    Kafka-Spark-stream-with-static-data-using-join:使用join的Kafka Spark流与静态数据

    卡夫卡火花流与静态数据使用联接 使用join的Kafka Spark流与静态数据

    大数据spark交流SPARK 技术交流

    Spark是加州大学伯克利分校AMP实验室(Algorithms, Machines, and People Lab)开发通用内存并行...除此之外,RDD还提供了诸如join、groupBy、reduceByKey等更为方便的操作(注意,reduceByKey是action,而非transforma

    spark-2.2.2安装流程

    Transformations:转换(Transformations) (如:map, filter, groupBy, join等),Transformations操作是Lazy的,也就是说从一个RDD转换生成另一个RDD的操作不是马上执行,Spark在遇到Transformations操作时只会记录...

    Spark调优.webp

    Spark调优 直接join将会对所有数据进行shuffle,需要大量的io操作,相同的key会在同一个partition中进行处理,任务的并发度也收到了限制。使用broadcast将会把小表分发到每台执行节点上,因此,关联操作都在本地完成...

    论文研究-基于Spark的两表等值连接过程优化.pdf

    其次结合simi-join和partition join两者的优势,对过滤后的单侧表使用贪心算法进行拆分;最后对拆分后的子集进行连接,因此把两大表的连接过程转换为分阶段进行的两小表连接。代价分析和实验结果表明,该算法与现有...

    Spark DataFrame详解.zip

    Spark DataFrame使用详解,包括:DataFrame解析;创建;Action;条件查询和join详尽操作解释

    SparkStreaming原理介绍

    以及 TCP sockets,从数据源获取数据之后,可以使用诸如 map、reduce、join 和 window 等 高级函数进行复杂算法的处理。最后还可以将处理结果存储到文件系统,数据库和现场仪表盘。 在“One Stack rule them all”的...

    大数据学习笔记

    第一部分 Spark学习 6 第1章 Spark介绍 7 1.1 Spark简介与发展 7 1.2 Spark特点 7 1.3 Spark与Hadoop集成 7 1.4 Spark组件 8 第2章 Spark弹性分布数据集 9 2.1 弹性分布式数据集 9 2.2 MapReduce数据分享效率低 9 ...

    spark-join-example

    执行为了从命令行运行,请输入 sbt ie $ sbt然后在 sbt 中运行一次: > clean> compile> run [sparkmaster=???] [cassandrahost=???]然后系统会提示您选择要执行的示例。 Multiple main classes detected, select ...

    spark rdd api dataframe 以及dataframe rdd dataset 相互转换 spark sql

    包括spara rdd api,dataframe action操作、查询操作、join操作,dataframe rdd dataset 相互转换以及spark sql。

    heads-join:支持 Spark 的 Melody-Join 版本 2

    头连接支持 Spark 的 Melody-Join 版本 2

    spark流数据处理:SparkStreaming的使用

    SparkStreaming可以从很多数据源获取数据,比如:Kafka、Flume、Twitter、ZeroMQ、Kinesis或TCP连接等,并可以用很多高层算子(map/reduce/join/window等)来方便地处理这些数据。最后处理过的数据还可以推送到文件...

Global site tag (gtag.js) - Google Analytics