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

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

AI智能视频监控系统,监控报警功能兼具,安全性更高AI智能时代,只有单一功能的产品显得很简陋。在新技术的加持下,视频监控系统也开始内卷了。除了单一的监控功能之外,增加了其他功能,其中值得一说的是联网报警功能,两大功能相辅相成才是真换电加持助推新能源概念走强研究认为,2022是换电站放量元年,未来市场规模将有望超5000亿元新快报讯记者涂波报道宁德时代将举行换电品牌发布会,将面向全部车企,进入换电赛道。受消息影响,昨日,宁德时代带动新在输入法里创造流行语用户体验成第三方输入法竞争焦点智能时代,各种第三方输入法已经成为了人人交互人机交互人云交互的重要工具。在使用这些输入法的同时,人们也创造出各种新鲜词汇来表达自己的情绪和态度,不经意间有些就变成了地球人都知道的流恒大汽车如何一飞冲天?吾有上中下三策首先,全国汽车保有量3。95亿台,新能源汽车784万辆,按照碳排放标准,未来20年燃油汽车会逐渐退出市场,新能源汽车会成为主流。燃油车一般使用10年就得换,当然有些人可能5年不到就大有可为小米WatchS1测评当我们考虑购入一款手腕穿戴设备时,往往会有两个选择手环和手表。相信也有不少朋友在选购时纠结于此,选购手环,担心屏幕太小功能较少选购手表,又担心功能不够丰富不够实用,变成了大号手环。索尼ICDTX660,小小一支就能解决打工人大麻烦不少朋友对于录音笔的印象还停留在只是简单的录音的层面上,但是当你用了一款好用的录音笔之后,就知道为什么手机也能录音,却有那么多人会选择录音笔了。特别是现在接近年终,打工人们将要面对家用烤箱怎么选?这次带来的是海氏i7风炉烤箱使用分享Hello,我是山贼95270吖。关注我的朋友应该知道,作为一个入烘焙坑7年的烘焙爱好者,一直没有停止买买买的脚步,买得多了,自然也增长了些奇奇怪怪的小知识。所以你也喜欢烘焙,或者B站回应有用户疑上传破解的摄像头监控画面下架并封禁澎湃新闻记者朱轩1月17日,有网友爆料称,有用户在B站(哔哩哔哩弹幕网)上传疑似破解公共场所摄像头后获得的监控视频,引发关注。该网友称,在该网站上看到疑似专门破解学校医院等公共场所农村卫星电视接收器的位置信息改变了,该怎么调?大家好!我来回答这个问题,我们村一百多台户户通电视接收器都是我一个人按装的,对于这个问题我是最了解的!电视接收器也叫机顶盒,其实,出现电视接收器位置信息改变有两种原因,一种是你确实如何用手机调出火爆ins的青橙风夜景?青橙风的夜景城市照似乎有种神奇的魔力,令人看一眼就不知不觉喜欢上了。而今天Air君则邀请了我们的老朋友木西老师,给大家好好讲下如何用手机轻松调出ins青橙风夜景。相信大家一直都有看双碳元年,三一摘得新能源重卡年度销冠根据第一商用车网掌握的最新数据,2021年,三一累计销售1497辆新能源重卡,占据14。33的市场份额,夺得国内新能源重卡年度销量冠军。2021年,是双碳元年。这一年,国内新能源重
兰博基尼Urus两年狂卖万辆,休旅就是好卖休旅就是好卖!第10000辆兰博基尼Urus正式出厂2018年才上市的Urus宣布达标量产一万辆里程碑,同样的目标可是花了小牛Huracan近3年半的时间!产线一度因疫情停摆销售表丰田欧版Corolla推出GRSport版丰田欧版Corolla推出GRSport版欧版Corolla推出GRSport车型,强化运动风格,不过说实话,觉得还是台湾版的AltisGRSport比较帅。作为东欧市场首款GRS宝马新一代X1预测外观出炉,有望搭载超省油新动力BMW新一代X1预测外观出炉,有望搭载超省油新动力!BMW入门休旅X1现行版本已经销售6年,也准备进行更新换代,日前一组伪装测试照曝光后,近日专业绘制新车预想图的TobiasBut黑潮上身!现代KonaNightEdition北美限量发售黑潮上身!现代KonaNightEdition北美限量发售现代近日在北美市场推出KonaNightEdition限量特仕车,确切配额9月开卖时才会公布!18吋Rays铝圈三种专属车最速电动超跑即将量产!特斯拉Roadster最快12个月内开始量产最速电动超跑量产有谱了!马斯克暗示特斯拉Roadster最快12个月内开始量产2017年首次发布的特斯拉特斯拉Roadster电动跑车从0加速到100kmh只需2。1秒的剽悍性能引UampampampI由我科技参加2020果粉嘉年华狂欢节,展台于B区B072020果粉嘉年华狂欢节9月26日周六我在深圳等你邂逅超人气品牌,探索你的音频新体验UI由我参加2020果粉嘉年华狂欢节展台位于B区B07欢迎大家前来咨询!本次果粉嘉年华,UI由我高光时刻由我科技荣登2020广州高科技高成长20强榜单2020年11月9日下午,由大湾区科技创新服务中心德勤中国联合主办,广东股权交易中心协办的2020年广州高科技高成长20强暨广州明日之星在广州国际科技交流中心隆重举办。UI由我科技对话由我科技解读TWS耳机外观技术专利的重要性视频加载中UI由我科技是我爱音频网的老朋友了,在2019年的我爱音频网对UI由我科技的专访中,何芊先生透露早在2015年,基于对蓝牙行业流行的运动款蓝牙耳机及无线趋势的思考,UI由2020奔驰CClassSedanAMGC434MATIC进化版2020奔驰CClassSedanAMGC434MATIC进化版车身座位4门5人座性能数据390hp6100rpm53kgm25005000rpm变速系统9速手自排能量消耗平均10米字旗尾灯数字仪表上身MiniJCWCountryman小改款发表米字旗尾灯数字仪表上身MiniJCWCountryman小改款发表5月份推出小改款的MiniCountryman,性能版JCW车型接续登场,外观换上新造型,内装追加新配备,动力单元2020款宝马3系M340ixDrive2020BMW3SeriesSedanM340ixDrive车身座位4门5人座性能数据374hp5500rpm51。0kgm1850rpm变速系统8速手自排能量消耗平均11。2km