spark join broadcast优化
在大量数据中对一些字段进行关联。
举例
ipTable:需要进行关联的几千条ip数据(70k) 
hist:历史数据(百亿级别)
直接join将会对所有数据进行shuffle,需要大量的io操作,相同的key会在同一个partition中进行处理,任务的并发度也收到了限制。
使用broadcast将会把小表分发到每台执行节点上,因此,关联操作都在本地完成,基本就取消了shuffle的过程,运行效率大幅度提高。
样本数据(2000w)性能测试对比
小表没有进行broadcast
进行了broadcast,可以看到连shuffle过程都省略了
实现代码(spark1.5)
//读取ip表
val df = ...
//如果数据小于设定的广播大小则将该表广播,默认10M
df.cache.count
//注册表
df.registerTempTable("ipTable")
//关联
sqlContext.sql("select * from (select * from ipTable)a join (select * from hist)b on a.ip = b.ip")
......
设置表广播的阈值,如果有需求且内存足够,可以将该值提高,默认10M
spark.sql.autoBroadcastJoinThreshold
spark join broadcast优化的更多相关文章
- Spark:Join相关优化文章
		
http://blog.csdn.net/lsshlsw/article/details/48975771 https://www.douban.com/note/499691663/ http:// ...
 - Spark SQL 性能优化再进一步:CBO 基于代价的优化
		
摘要: 本文将介绍 CBO,它充分考虑了数据本身的特点(如大小.分布)以及操作算子的特点(中间结果集的分布及大小)及代价,从而更好的选择执行代价最小的物理执行计划,即 SparkPlan. Spark ...
 - Spark map-side-join 关联优化
		
在spark中要进行join操作,如果在shuffle的时候进行join效率较低.如果满足 所需要join的表中有一张表较小,那么可以考虑在map端进行join操作. 转载:http://blog.c ...
 - [转] - Spark排错与优化
		
Spark排错与优化 http://blog.csdn.net/lsshlsw/article/details/49155087 一. 运维 1. Master挂掉,standby重启也失效 Mast ...
 - SparkSQL的一些用法建议和Spark的性能优化
		
1.写在前面 Spark是专为大规模数据处理而设计的快速通用的计算引擎,在计算能力上优于MapReduce,被誉为第二代大数据计算框架引擎.Spark采用的是内存计算方式.Spark的四大核心是Spa ...
 - 大数据开发-Spark Join原理详解
		
数据分析中将两个数据集进行 Join 操作是很常见的场景.在 Spark 的物理计划阶段,Spark 的 Join Selection 类会根 据 Join hints 策略.Join 表的大小. J ...
 - spark join操作解读
		
本文主要介绍spark join相关操作,Java描述. 讲述三个方法spark join,left-outer-join,right-outer-join 我们以实例来进行说明.我的实现步骤记录如下 ...
 - Spark读Hbase优化 --手动划分region提高并行数
		
一. Hbase的region 我们先简单介绍下Hbase的架构和Hbase的region: 从物理集群的角度看,Hbase集群中,由一个Hmaster管理多个HRegionServer,其中每个HR ...
 - spark 集群优化
		
只有满怀自信的人,能在任何地方都怀有自信,沉浸在生活中,并认识自己的意志. 前言 最近公司有一个生产的小集群,专门用于运行spark作业.但是偶尔会因为nn或dn压力过大而导致作业checkpoint ...
 
随机推荐
- jfinal
			
http://blog.csdn.net/zb0567/article/details/21083021
 - php源码安装
			
要用swoole,首先需要有PHP环境.由于swoole的某些特性,最好是能够从源码编译安装PHP,这样在使用过程中可以避免很多不必要的错误.PHP下载地址:http://php.net/在这里挑选你 ...
 - firs tday
			
1.JVM 解析: 2.JDBC 解析: 3.Spring
 - oracle常用的SQL语句
			
一些常用的SQL语句: --建表 create table adolph (id number(10,0), name varchar2(20), ...
 - 转:ASP.NET MVC扩展之HtmlHelper辅助方法
			
1.什么是HtmlHelper辅助方法?其实就是HtmlHelper类的扩展方法,如下所示: namespace System.Web.Mvc.Html { public static class F ...
 - 【python PIL学习】给照片打水印
			
不知道别人是怎么做的,闲着无聊就根据前几天看到的一些PIL里面的函数,写了这个小程序,经过测试,基本可以给所有像宽400以上的图片打上从左下到右上的看上去质量尚可的水印,更小的图片水印偏下.写完觉得很 ...
 - LightOj1137 - Expanding Rods(二分+数学)
			
题目链接:http://lightoj.com/volume_showproblem.php?problem=1137 题意:有一根绳子的长度为l,在有温度的情况下会变形为一个圆弧,长度为 l1 = ...
 - recordcount
			
rs.recordcount 有时不能取到数,这时 要更改游标为客户端游标 .
 - mysql 数据库授权
			
1: GRANT ALL PRIVILEGES ON share_db.* to 'db_user'@'%' IDENTIFIED BY 'db_user'; 2:FLUSH PRIVILEGES;
 - VI使用技巧
			
命令模式下: 1.YY 拷贝当前行 2.P 粘贴拷贝的内容 3.dd 删除当前行 4.输入“:set nu”,显示行号 5.输入“G”,到文件尾部.输入“gg”,到文件头部. 6.输入“/字符串”,进 ...