游戏电视苹果数码历史美丽
投稿投诉
美丽时装
彩妆资讯
历史明星
乐活安卓
数码常识
驾车健康
苹果问答
网络发型
电视车载
室内电影
游戏科学
音乐整形

源码级解读如何解决Sparksql读取hive分区表执行效率

  问题描述
  在开发过程中使用spark去读取hive分区表的过程中(或者使用hiveonspark、nodepad开发工具),部分开发人员未注意添加分区属性过滤导致在执行过程中加载了全量数据,引起任务执行效率低、磁盘IO大量损耗等问题。
  解决办法
  1、自定义规则CheckPartitionTable类,实现Rule,通过以下方式创建SparkSession。typeExtensionsBuilderSparkSessionExtensionsUnit在Optimizer中追加CheckPartitionTable规则执行器valextBuilder:ExtensionsBuilder{ee。injectOptimizerRule(CheckPartitionTable)}valconfnewSparkConf()。setMaster(local〔〕)。set(spark。table。check。partition,true)。set(spark。table。check。partition。num,30)。setAppName(SQL)valsparkSparkSession。builder()。config(conf)。withExtensions(extBuilder)。enableHiveSupport()。getOrCreate()
  2、自定义规则CheckPartitionTable类,实现Rule,将规则类追加至Optimizer。batches:Seq〔Batch〕中,如下。
  规则内容实现
  1、CheckPartitionTable规则执行类,需要通过引入sparkSession从而获取到引入conf;需要继承Rule〔LogicalPlan〕;caseclassCheckPartitionTable(sparkSession:SparkSession)extendsRule〔LogicalPlan〕withPredicateHelper{是否检查分区,配置valcheckpartitionspark。table。check。partition检查分区,限制分区读取数量,配置valchecknumpartitionspark。table。check。partition。numvalconfsparkSession。conf
  2、通过splitPredicates方法,分离分区谓词,得到分区谓词表达式。在sql解析过程中将谓词解析为TreeNode,此处采用递归的方式获取分区谓词。defsplitPredicates(condition:Expression,partitionSet:AttributeSet):Seq〔Expression〕{conditionmatch{匹配and表达式,并筛选and表达式中的分区表达式caseAnd(cond1,cond2)splitPredicates(cond1,partitionSet)splitPredicates(cond2,partitionSet)匹配or表达式,并筛选or表达式中的分区表达式caseOr(cond1,cond2)valleftSeqsplitPredicates(cond1,partitionSet)valrightSeqsplitPredicates(cond2,partitionSet)if(leftSeq。nonEmptyrightSeq。nonEmpty)Or(leftSeq。reduceLeft(And),rightSeq。reduceLeft(And))::NilelseNilcaseotherif(other。references。subsetOf(partitionSet))other::NilelseNil}}
  3、判断是否是分区表,且是否添加分区字段。defisPartitionTable(filter:Filter,numPartition:Int):Boolean{varbooleanfalsefilter。childmatch{匹配logicalRelationcaselogicalRelationLogicalRelation(fsRelationHadoopFsRelation(location:CatalogFileIndex,partitionSchema:StructType,,,,),,catalogTable)valtablecatalogTable。get判断读取表是否存在分区columnif(table。partitionColumnNames。nonEmpty){valsparkSessionfsRelation。sparkSession获取表的分区column的AttributevalpartitionColumnslogicalRelation。resolve(partitionSchema,sparkSession。sessionState。analyzer。resolver)log。info(partitionColumns:partitionColumns)valpartitionSetAttributeSet(partitionColumns)获取分区Filter表达式valpartitionKeyFilterssplitPredicates(filter。condition,partitionSet)varpartitionsize1Lif(partitionKeyFilters。nonEmpty){log。info(partitionKeyFiltersExpression:partitionKeyFilters)在hdfs上获取分区pathvalprunedFileIndexlocation。filterPartitions(partitionKeyFilters)valpartitionsprunedFileIndex。partitionSpec()。partitionspartitionsizepartitions。sizelog。info(partitions:partitions)}booleanpartitionKeyFilters。isEmptypartitionsizenumPartition}匹配CatalogRelationcasecatalogRelation:CatalogRelationvalpartitionSetAttributeSet(catalogRelation。partitionCols)valpartitionKeyFilterssplitPredicates(filter。condition,partitionSet)判断是否存在分区属性booleanpartitionKeyFilters。forall(。references。subsetOf(partitionSet))caselog。warn(未获取到表信息)}boolean}
  4、实现Rule的apply方法defapply(plan:LogicalPlan):LogicalPlanif(!conf。get(checkpartition,true)。toBoolean){log。warn(sIsnotenabledcheckpartition)plan}elseplantransform{casejFilter(condition:Expression,child:LogicalPlan)ifisPartitionTable(j,conf。get(checknumpartition,s{Int。MaxValue})。toInt)thrownewException(s{condition。sql}{child。treeString}Nopartitioninformationisaddedtothepartitiontable。stripMargin)}
  大数据和云计算的关系
  大数据JUC面试题
  大数据之Kafka集群部署
  大数据logstsh架构
  大数据技术kafka的零拷贝

小欢喜今日上线魔性生吞海参扛起高考养生大旗星关系7月31日讯终于盼望到爱奇艺《小欢喜》上线啦!暑期档现实主义大剧即将拉开神秘帷幕,汪俊执导,黄磊、海清、陶虹、王砚辉、咏梅领衔主演,周奇、李庚希、郭子凡、刘家祎主演,沙溢……宸汐缘展现极美情感新解读张震倪妮情感线出现新状况星关系7月30日讯日前,由华策克顿旗下剧酷传播极美工作室、爱奇艺联合出品,张震、倪妮领衔主演,李东学、张芷溪、李嘉铭、海铃、刘芊含、张海宇、那广子、王庆祥、黄海冰等实力演员加盟……雷柏NX1700键鼠套装新品发布,这一次,除了触感很舒适,还圆是彬彬有礼,是周而复始在棱角分明的锋芒之下包裹的是温润和煦的柔软内心这是NX1700有线键鼠套装的设计语言纯黑,之于每个系列,登场以黑为主,在简……小女上房揭瓦探班演绎别样浪漫国风情怀星关系7月30日讯近日,民国青春励志行业剧《小女上房揭瓦》在横店举行媒体探班活动。该剧是由爱奇艺文学、无锡大唐之星文化传媒有限公司、广西霓凰文化传媒有限公司出品,象山丽臻文化传……曾黎青春同学会反串白景琦自我调侃曾七爷来了由东方卫视与欢乐传媒联合出品的体验型励志综艺《青春同学会》迎来了曾黎、梅婷、胡静、张彤四朵金花齐聚首,青春大比拼、暗中整蛊和老地方聚餐,处处充满青春回忆和爆笑看点,更有曾黎亲手……从FacebookConnect2021看VR未来的发展趋势(VRPinea10月29日讯)北京时间10月29日凌晨1点,VR业内最期待的年度大会FacebookConnect终于拉开了帷幕。与之前透露的消息一致,Facebook……电动汽车空调制冷与燃油车空调制冷有三大不同点目前越来越多的朋友选择电动汽车,毕竟电动汽车有一些燃油车没有的优点,比如环保、不限号、科技感更强、通勤上下班省钱、车内安静等优点。同时相对于燃油车也有一些缺点,比如续航里程焦虑……青春警事高燃热播焦俊艳魏大勋体验式表演获赞《青春警事》高燃热播焦俊艳魏大勋体验式表演获赞由公安部金盾影视文化中心、公安部华盛音像出版社、企鹅影视、观达影视联合出品,阮惟新执导的热血公安青春正能量剧《青春警事》正在……神来之笔9毛9的传奇故事做面条起家,年入20亿,上市之后股价暴涨百分之44。这简直就是神来之笔。在港股上市的9毛9集团,人称一块不到,目前他们集团旗下的9毛9在中国西北菜排名里面排老二,而……两条美国的坏消息,新增确诊再度全球第一,前外交官承认性侵罪行特朗普任内,美国的国际声望下跌到了谷底。等到拜登上台以后,美国各种问题跌出,国际声望依旧没有反弹。最近,又有两条关于美国的坏消息传了出来。疫情爆发以后,美国与印度成为了重……刘冬沁法医秦明2超痴情直面过往亲手揭初恋疑云由青年演员刘冬沁、刘畅、于莎莎主演的悬疑刑侦剧《法医秦明2清道夫》正在热播中,截止目前为止网络播放量突破十亿,讨论热度不断升高。在本周更新的剧情中,刘冬沁所饰演的法医秦明,首次……扶摇正能量诠释拼搏精神励志成长现实温度再引共鸣由柠萌影业、柠萌悦心、企鹅影视联合出品,改编自天下归元小说《扶摇皇后》,解嬿嬿编剧,杨文军、谢泽、李才联合执导,杨晓培担任总制片人,杨幂、阮经天领衔主演,刘奕君、王劲松特别主演……
为什么很多人手机后面放一张纸或者一张钱?有何寓意和讲究吗?易经八卦风水大师说,他的手机是时刻都离不开身边的,手机壳中间夹钱的话,就代表着手上时时刻刻都攥着钱,永远不缺钱。虽然带点迷信的意味,但这个财源滚滚的寓意还是没毛病的。手机……大冰小将易烊千玺独家音标学粤语雷佳音爆笑献唱黑凤梨星关系3月8日讯由国家体育总局冬季运动管理中心联合浙江卫视制作的国内首档少儿燃动冰雪成长类节目999小儿感冒药《大冰小将》将于3月9日(周六)晚20:30播出第九期。本期节目,……大冰小将易烊千玺带队出征香港雷佳音回归竟遭嫌弃委屈吐槽感觉我星关系3月7日讯由国家体育总局冬季运动管理中心联合浙江卫视制作的国内首档少儿燃动冰雪成长类节目999小儿感冒药《大冰小将》将于3月9日(周六)晚20:30播出第九期。本周,为帮……上戏与爱奇艺联动探索培养新模式首部实验网剧即日开拍星关系3月7日讯3月6日,上海戏剧学院联手爱奇艺首部实验网剧的发布会在上海戏剧学院端钧剧场举行。活动当天,上海戏剧学院党委书记楼巍;上海戏剧学院院长黄昌勇;爱奇艺创始人、CEO……电视剧合伙人即将收官菅纫姿告白角色犬系女友很忠诚星关系讯:由演员朱亚文、郑元畅、李佳航、菅纫姿主演的创业励志大剧《合伙人》本周即将迎来收官,该剧播出至今,收视率排名稳居电视剧前三位,网络播放量突破8亿,成绩喜人。剧中,菅纫姿……延禧攻略利落重现江南偶遇璎珞化身沽酒女郎开撩乾小四星关系讯:今晚,《延禧攻略》继续开更,利落组合开启飓风撒糖模式。凭借欲拒还迎的套路撩汉大法喜提令嫔后,璎珞还将在宫里大玩变装cosplay。讨得太后欢心不说,更收获皇上玉佩一枚……刘敏涛与倪妮母女情深牺牲小我引出一首天盛长歌星关系讯:暑期档重磅剧集《天盛长歌》将于今晚登陆湖南卫视黄金档。这部汇集了陈坤、倪妮、刘敏涛等实力演员的剧集,在众人的期待中终于磅礴登场。剧中,刘敏涛饰演倪妮的母亲秋明缨,她用……盘点A股被严重低估的6大化工黑马,甲醇新能源上升为国家战略第六名。泸天化总市值:118亿泸天化成立于2003年,前身为创建于1959年的泸州天然气化工厂。始终深耕于以天然气为核心的化肥领域。不仅是中国第一个采用先进技术的最……36个月流畅不卡顿OneUI3让三星GalaxyZFold3近日,三星新一代折叠屏手机三星GalaxyZFold35G在国内正式亮相,该机不仅带来了沉浸式的影音娱乐体验和更高效的大屏生产力,其搭载的最新OneUI3系统中还引入了AI系统……天天向上十周年庆典开播田源等新老兄弟再聚首昨晚,《天天向上》播出十全十美十周年庆典特别节目。田源、俞灏明、大张伟等新老天天兄弟齐同台,再聚首为观众带来一场特别盛典。作为天天兄弟团最初的成员之一,田源在此次十周年庆……合伙人本周收官菅纫姿走心感情戏获赞星关系讯:由演员朱亚文、郑元畅、李佳航、菅纫姿主演的创业励志大剧《合伙人》在北京卫视热播。该剧播出至今日,网播量已突破7亿大关,收视也稳居前排。菅纫姿作为该剧女主,在剧中饰演辛……释小龙亮相武动乾坤见面会称角色少言多靠细节星关系讯:近日,演员释小龙与董晴一起亮相《武动乾坤》深圳见面会,为电视剧宣传造势。见面会上释小龙谈及自己与角色有很多相似之处,也表明自己非常喜欢林炎这个角色。剧中林炎有大量戏份……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网