最近在处理两份大表之间的join优化。

表1 数据量是 8.1G

表2 数据量是 24.1G

spark.sql.shuffle.partitions 800

5个Executor,每个Executor 10G内存,每个Executor CPU的cores是 4

制定了3中优化措施。

1:表2 直接 left join 表1.

2:表2 union 表1 ,然后groupBy

3:表1 和 表2 的读取结果 根据 join的key 做hash,然后partitionBy 写入到hdfs上,然后读取hash值的每个文件路径,最后合并。

经过测试后 发现 情况2的测试效果反而是最好,

但是最后 一个stage 读取 这个shuffle后的结果还是要将近 20min。

stage-14 中读取了24.1G 的数据,中间有一部分数据需要过滤,过滤 scan_site_id在 一张小表中的数据,之前的做法是将这份小表 broadcast后 注册 udf函数,然后 通过udf进行过滤,后来的做法是 直接将小表cache,然后进行broadcast join后,速度快了30s,不多。

stage-15 读取了24G的shuffle数据,后面有负责的逻辑处理,都是调用spark的内置函数。

最后 将这一切的复杂逻辑操作 全部放入到 MapPartitions中进行操作,速度快了10min,与之前相比,执行速度快了50%。

现在看来似乎是 通过自己的java代码实现的 执行速度 远远大于 spark调用内置函数的数据,奇怪,理论上应该spark中调用内置函数应该更快。

Spark 大表之间的join相关推荐

  1. spark sql优化:小表大表关联优化 union替换or broadcast join

    ----原语句(运行18min) SELECTbb.ipFROM(SELECTip ,sum(click) click_num,round(sum(click) / sum(imp), 4) user ...

  2. 关于hive中Map join 时大表left join小表的问题

    在hive中,(启用Map join时) 大表left join小表,加载从右向左,所以小表会加载进内存,存储成map键值对,通过大表驱动小表,来进行join,即大表中的join字段作为key 来获取 ...

  3. oracle 表连接 大表小表_优化必备基础:Oracle中常见的三种表连接方式

    在Oracle SQL语句中,如果from后面有多个表时,表的连接方式是一个很重要的考量. 从Oracle 6开始,优化器就支持下面4种表连接方式: - 嵌套循环连接(Nested Loop Join ...

  4. Hadoop大数据——mapreduce的join算法

    (1)Reduce side join 示例: 订单数据 商品信息 实现机制: 通过将关联的条件作为map输出的key,将两表满足join条件的数据并携带数据所来源的文件信息,发往同一个reduce ...

  5. 大表与大表join数据倾斜_技术分享|大数据技术初探之Spark数据倾斜调优

    侯亚南 数据技术处 支宸啸 数据技术处 在大数据计算中,我们可能会遇到一个很棘手的问题--数据倾斜,此时spark任务的性能会比预期要差很多:绝大多数task都很快执行完成,但个别task执行极慢或者 ...

  6. Spark调优、DataFrame API使用、大表Join、动态分区

    Spark DataFrame [scala版] 实践小结 Spark DataFrame 使用注意事项 下面介绍的是使用Dataframe时 api 文档中没有写,但是需要注意的坑. DataFra ...

  7. 记一次spark两个大表join数据倾斜调优

    a表7亿条 b表1亿条a表 aid c1 c2 c3 b表 bid bvalue需求:分别用a表的c1 c2 c3与b表的bid关联(left join),获取bvalue 来扩充a表1.直接写三个l ...

  8. 【Spark调优】大表join大表,少数key导致数据倾斜解决方案

    [Spark调优]大表join大表,少数key导致数据倾斜解决方案 参考文章: (1)[Spark调优]大表join大表,少数key导致数据倾斜解决方案 (2)https://www.cnblogs. ...

  9. 【Spark调优】小表join大表数据倾斜解决方案

    [Spark调优]小表join大表数据倾斜解决方案 参考文章: (1)[Spark调优]小表join大表数据倾斜解决方案 (2)https://www.cnblogs.com/wwcom123/p/1 ...

最新文章

  1. Linux(CentOS 7_x64位)系统下安装ACPYPE
  2. 使用ELK 搭建core文件展示平台
  3. OpenAI 挑战《索尼克》,阿里南大队如何一举夺魁?
  4. pytorch0.4版的CNN对minist分类
  5. ssb门限_画出滤波法ssb信号调制器模型,并说明低通和高通滤波器分别得到哪个边带信号...
  6. python 各个模块的简单介绍 转载
  7. html:(36):间距和对齐
  8. webUI自动化一元素定位
  9. Numpy 基本除法运算和模运算
  10. 拓端tecdat|R语言Gabor滤波进行目标图像纹理特征的提取
  11. golang 图片处理,剪切,base64数据转换,文件存储
  12. Internet Download Manager(IDM下载器)
  13. solidworks中皮带同步轮配合如何做?几张图教会你
  14. vue2.0项目页面字体切换为繁体
  15. 使用wireshark抓包获取湖北电信校园网飞Young宽带客户端加密后的账号密码
  16. 用python做系统的感悟_《Python机器学习经典实例》学习感悟
  17. MicroExpSTCNN and MicroExpFuseNet-基于三维时空卷积神经网络的自发面部微表情识别
  18. java 生成数字_Java随机生成数字的方法
  19. 抖音整人/撩小姐姐代码(vbs脚本)
  20. Windows 10 全新界面要来了:焕然一新!

热门文章

  1. OpenGL扩展之点精灵的使用
  2. go-ethereum相关
  3. Nuxt.js(Vue SSR)项目配置以及开发细节
  4. Oracle安装的一些问题收集[转]
  5. ajax put 请求
  6. Java小白必须掌握的英语单词(2)
  7. 网络字体反爬之pyspider爬取起点中文小说
  8. java web中的中文乱码问题和解决方法
  9. for循环中抛出异常_不要抛出循环!
  10. hive-jdbc-uber-2.6.5.0jar包自提