范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Spark3针对SQL有哪些优化手段

  相对于 Spark 2.3/2.4,Spark 3 提供了一些新特性,极大优化了超大数据量的查询。主要有三点:引入 Adaptive Query Execution 自适应执行,解决了热点数据倾斜的问题支持 Hint 提示,增加了SQL的可操控性增加了一些 set 参数,增加SQL的可操控性Adaptive Query Execution 默认配置
  Spark 3 默认启用AQE,启用以后Spark会根据运行时的统计信息,动态优化查询计划。set spark.sql.adaptive.enabled=true;
  针对数据倾斜,Spark3 默认启用了 AQE,并预设置了参数:set spark.sql.adaptive.skewJoin.enabled=true; set spark.sql.adaptive.skewJoin.skewedPartitionFactor=5; set spark.sql.adaptive.skewJoin.skewedPartitionThresholdInBytes=256MB; set spark.sql.adaptive.advisoryPartitionSizeInBytes=64MB;
  一个分区被判定为数据倾斜,必须满足两个条件:分区数据的大小超过 skewedPartitionThresholdInBytes,默认256M分区数据的大小超过 所有分区大小的中位数*skewedPartitionFactor。
  假如一个stage shuffle以后有200个分区,分区大小中位数是 128M,skewedPartitionFactor=5,那么超过640MB的分区会被判定为数据倾斜。
  对于倾斜的分区进行拆分时,每个分区的大小接近 advisoryPartitionSizeInBytes。
  在TB数据量级的Hive表上查询时,如果Yarn集群比较大,skewedPartitionThresholdInBytes 和 advisoryPartitionSizeInBytes 默认值就有点小了,可以根据情况自己情况调大。但skewedPartitionThresholdInBytes 理论上应该比 advisoryPartitionSizeInBytes 大。利用AEQ 合并分区
  在 JOIN 或 Aggregate 以后,shuffle结果的分区可能会特别多,导致下一个Stage的任务数特别多,或者Hive表包含了太多的小文件。Spark默认启用了 coalescePartitions 功能用来优化这种情况:set spark.sql.adaptive.coalescePartitions.enabled=true; set spark.sql.adaptive.coalescePartitions.parallelismFirst=true; set spark.sql.adaptive.coalescePartitions.minPartitionSize=1MB;
  这个参数有两种工作模式:
  高并发模式:coalescePartitions.parallelismFirst=true 时,通过 coalescePartitions.minPartitionSize 判断一个 partition 是否需要合并;
  低并发模式:coalescePartitions.parallelismFirst=false 时,通过前面提到的 advisoryPartitionSizeInBytes=64MB 判断一个partition 是否需要合并;
  可以看到,Spark默认选择了高并发模式,带来了结果是 shuffle后任务 (Task) 过多,如果每个任务都处理极少的数据量,调度带来的性能损耗会大于计算带来的效率增益。
  由于这个参数是全局生效的,所有的 shuffle 里都会生效。在实际使用中,可以调高 coalescePartitions.minPartitionSize,以取得比较好的平衡。或者使用 Spark hints 对特定的环节进行合并。Spark Hints
  Spark Dataset API 提供了很多方法来精细化控制每个环节的执行,比如 repartition、coalesce、broadcast 等,SQL 基础的语法框架并不支持这些。在不改变 SQL 基本语法的前提下,Spark 引入了 Hint (提示)。 我们可以通过类似于注释的语法,实现对特定环节的精细化控制。
  场景一:控制 Join 模式
  从性能角度 Broadcast Join > Shuffle Hash Join > SortMerge Join。与TB级的表 JOIN 时,我们尽量用空间换时间,选择Broadcast Join。通常情况下,spark.sql.autoBroadcastJoinThreshold 默认值是10MB,我们可以调大到512MB:set spark.sql.autoBroadcastJoinThreshold=536870912;
  10MB 可以容纳 131万个 BIGINT,但涉及到的字段比较多时,支持的数据条数会剧烈下降。增加这个阈值,上千万级别的大表都可以被 Broadcast,而TB级的表不需要做shuffle,这个空间损耗远远小于 TB级大表做Shuffle带来的时间和空间损耗。
  在个别情况下,比如对表大小的统计不准确,autoBroadcastJoinThreshold 无法生效的情况,可以使用 spark hint 强制走 broadcast:SELECT /*+ BROADCAST(t1) */ * FROM t1 INNER JOIN t2 ON t1.key = t2.key;
  好的一点是:Broadcast hint 的优先级要高于autoBroadcastJoinThreshold参数。
  对于JOIN 两侧表都比较大的情况,也可以通过 hint 触发 shuffle hash join:SELECT /*+ SHUFFLE_HASH(t1) */ * FROM t1 INNER JOIN t2 ON t1.key = t2.key;
  场景二:Partitioning Hints 分区提示
  分区提示支持四种模式:coalesce:合并分区,但不触发shufflerepartition:允许按照特定字段合并/拆分分区,触发shufflerepartition_by_range:和repartition类似rebalance:合并/拆分分区,但会保持输出分区大小尽量一致,倾斜的分区会被拆开
  在写入 Hive表时,选择rebalance 模式能够比较好地保持输出文件大小的均衡。SELECT /*+ COALESCE(100) */ * FROM t; SELECT /*+ REBALANCE(c) */ * FROM t;其他常用的优化参数
  场景一:Hive 表小文件读取优化
  Spark 在读取大文件时,如果文件大小超过 hdfs block 大小,会默认拆分到多个partition里。如果是小文件,则会每个小文件对应一个Task。如果Task数量超过10w,Spark集群的性能会出现严重的衰减,绝大多数情况下是小文件问题:
  对于小文件问题,如果上游能优化一下,比如通过 repartition hints 或 coalescePartitions 参数等,下游一般都不用考虑这个问题。如果上游解决不了,下游还可以通过 maxPartitionBytes 将多个文件合并到同一个分区下:set spark.sql.files.maxPartitionBytes=134217728;
  值得注意的是:这个参数只对 parquet、orc 和 json 格式的表生效,对 text 格式的hive表无效。
  场景二:控制 shuffle 输出的分区数set spark.sql.shuffle.partitions=200;
  这是一个全局参数,如果hive表的数据量比较大,可以调大这个参数。否则可能会出现 executor oom 的情况。当然另外一种方式是 增大 executor memory:set spark.executor.memory=16g;
  本期的 SQL 优化就到这里,想要查询更多资料的话:Spark hints: Google 搜索 "Spark 3.2.1 hint"Spark性能优化: Google 搜索 "Performance Tuning - Spark 3.2.1 Documentation"更多set 参数:参考 github apache/spark 下 sql/catalyst/src/main/scala/org/apache/spark/sql/internal/SQLConf.scala

银色升降塔,手机自如观看360度万向球设计及无段数升降调整的AluDisc支架,全方位解放双手。满足居家休闲办公工作,驾驶导航,享受正确姿势下的科技便利。包括有立架车架磁吸盘以及搭配MagSafe一起使用被埋没的性价比之王!这五款手机配置同级最强,3000以内轻松搞定说到性价比,在很长一段时间里都专属于小米以及旗下的子品牌红米(Redmi),不过最近两年不少手机厂商为了稳固自身现有的市场份额,或者进一步扩大自身份额,也是纷纷通过建立子品牌或者新Lisa与蔡徐坤代言,新自拍神器vivoS10系列官宣将在7月15日发布7月8日消息,vivo官方宣布,将于7月15日发布vivo宣布S系列新成员vivoS10,代言人为Lisa与蔡徐坤。根据官方公布的海报,vivoS10系列至少包含S10和S10Pr李彦宏百度智能汽车正在研发当中,预计2023年和大家见面IT之家7月8日消息在2021世界人工智能大会上,百度创始人李彦宏表示,智能汽车未来更像机器人,或者说,未来主流机器人的长相,更像智能汽车,百度的智能汽车正在研发当中,预计2023建共享车位,增夜间公交,西安人出行有多幸福?随着社会的发展,西安城市的扩容,也在日新月异,每一天都有新的变化,人口已经超过千万,停车位城市公共交通工具的配套,已经成为市民和乘客说必须配套的城市公共服务基础设施之一,那么,目前催收的为什么要求加微信,出于什么目的?我做过催收,我来回答这个问题,比较合理吧。他加你微信就和打电话发短信一样,加微信了之后是比后两者更方便,第一方便联系你,第二方便向你施压,电话和电话都有限制性,微信上面就比较有恃无华为MatePad11惊喜登场,性价比被爆赞,网友喊话小米平板6月份的华为全场景新品发布会上,新款MatePad正式发布,其中包括10。8英寸和12。6英寸两个版本,而定价方面均保持在40005000元的高端旗舰价位段,这样的性价比符合华为调遭三巨头夹击,主攻下沉市场,松果出行能否守住县城?共享单车进入我们的生活也有些年头了,甚至已经成为了很多人生活中必不可少的一部分,面对如此广阔的市场,各大资本并没有停下来,而是选择了更进一步,在很多一二线城市又推出了共享电动车。相中国最大AI芯片发布33个麒麟9000大小,12nm工艺,4项国内第一在2019年的时候,国外企业Cerebras推出了一款尺寸最大的AI芯片WSE,采用16nm工艺,其中包含1。2万亿个晶体管,面积达到了46225平方毫米,面积相当于麒麟9000的行业丨比亚迪新能源车销量力压宝马夺第四,国产车时代来临?最近,国外媒体CleanTechnica公布了15月份全球新能源汽车销量数据。比较亮眼的是,比亚迪以超5000辆的优势成功反超宝马,位列榜单第四名。而根据乘联会公布的5月份国内新能董明珠手机行业多年没有颠覆性产品所以大家觉得苹果好2015年,格力正式进军智能手机市场,并发布了首款智能手机,随后几年时间中,虽然普通消费者很难见到格力手机,但格力确实在不断的迭代升级。董明珠也曾公开表示,不会放弃格力手机,会一直
始于颜值忠于实力华为P40小屏旗舰不容错过对于华为P系列来说,每年春季的发布会不仅是一次在移动拍摄领域展现自身实力的机会,更是一次让世人了解到华为对于美的独特认知的窗口。就像全新发布的华为P40系列,将来源于流动的艺术的灵华为P40系列变身超级望远镜再创光学变焦新奇迹2020必备的5G手机,华为P40Pro配置超感光潜望式长焦摄像头拉近你和世界的距离。一个以128分刷新DxO的5G旗舰手机,有谁能够不心动呢?更何况还有五种神仙配色供你选择。说华2020年高性价比蓝牙耳机推荐漫步者W2亲测体验。真无线蓝牙耳机什么牌子性价比最高?这个问题我之前也对比了我很多蓝牙耳机,产品太多,确实不能面面俱到,今天给大家介绍一款我个人觉得性价比超高的真无线蓝牙耳机漫步者W2。按照国际惯例,华为P40系列ampampquot全能型ampampquot摄影旗舰新宠火爆销量亮眼4月8日华为P40系列于国内发布,当晚1008分,华为P40P40Pro正式开售,随即在华为官方商城和各大电商收获了相当多的好评。并第一时间登上京东手机通讯销量榜榜首,华为P40P电脑回收之生人坑一半,熟人大满贯电脑回收I5760导读老程今天在临沂大街小巷逛了一天,因为天气实在是太冷了,市场没人,三楼卖二手电脑的商家要比客户多,基本上上三楼的客户都是各家的熟人,也不太好下手截胡,但是咱又不能在市场坐以待毙,前三季度上汽名爵投诉分析,机械问题频发还减配?尽管上汽一直宣传着名爵的百年品牌以及运动气息,但近两年来的销量大不如从前,18月份销量仅有19万辆,不禁让人唏嘘。那如今的上汽名爵是怎样逐渐出现颓势,我们参考着汽车门网车主们投诉数线下购买台式电脑需要注意哪些问题实体店防坑指南导读很多人在购买电脑的时候,有几种选择,一种是从电商渠道购买整机,这种购买方式要注意的就是在购买电脑的时候要学习一下电脑的相关知识,毕竟不是所有的网店都是有良心的网店,相信老程,在计算机毕业设计之SpringBootVue。js学院工会管理系统平台系统功能工会管理平台基于JavaWeb技术研发,可以对工会工作进行自动化管理,实现工会管理及日常活动工作的各项业务支持。分析系统的业务要求及开发目标,提出系统的功能需求分为会员添加计算机毕业设计SpringBootLayUI仓库管理系统仓储调度物流管理需求实现材料仓库的管理提供材料出入库管理等实用功能。材料入库管理材料检验入库入库查询入库类别按月统计材料出库管理材料库存查询材料出库出库查询出库类别按月统计辅助管理仓库系统的人员管计算机毕业设计之炸街版SpringBootVue。js汽车资讯论坛系统开发框架前端VueelementUIaxios后端SpringBootMyBatisPlusDruid数据库MySQL创新点JavaMail找回密码阿里云OSS对象存储(视频图片在计算机毕业设计之SpringBoot家校通系统家校互联平台网站功能本家校互联系统主要包括系统校园新闻模块师生动态模块留言交流模块通知公告模块请假管理模块登录注册模块个人设置和退出模块等多个模块。开发技术mybatisspringbootjav