资源描述:
《Dive Into Catalyst》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、DiveIntoCatalystQConBeijing2015ChengLian“Inalmosteverycomputationagreatvarietyofarrangementsforthesuccessionoftheprocessesispossible,andvariousconsiderationsmustinfluencetheselectionamongstthemforthepurposesofaCalculatingEngine.Oneessentialobjectistochoo
2、sethatarrangementwhichshalltendtoreducetoaminimumthetimenecessaryforcompletingthecalculation.”AdaLovelace,1843WhatIsCatalyst?Catalystisafunctional,extensiblequeryoptimizerusedbySparkSQL.-LeveragesadvancedFPlanguage(Scala)features-Containsalibraryforrepresentingtreesandapplyi
3、ngrulesonthemTreesTreeisthemaindatastructureusedinCatalyst-Atreeiscomposedofnodeobjects-Anodehasanodetypeandzeroormorechildren-NodetypesaredefinedinScalaassubclassesoftheTreeNodeclassTreesExamples-Literal(value:Int)-Attribute(name:String)-Add(left:TreeNode,right:TreeNode)Add
4、(Attribute(x),Add(Literal(1),Literal(2)))RulesRulesarefunctionsthattransformtrees-Typicallyfunctional-Leveragepatternmatching-Usedtogetherwith-TreeNode.transform(synonymoftransformDown)-TreeNode.transformDown(pre-ordertraversal)-TreeNode.transformUp(post-ordertraversal)Rules
5、Examples-Simpleconstantfoldingtree.transform{caseAdd(Literal(c1),Literal(c2))=>Literal(c1+c2)caseAdd(left,Literal(0))=>leftcaseAdd(Literal(0),right)=>right}RulesExamples-Simpleconstantfoldingtree.transform{caseAdd(Literal(c1),Literal(c2))=>Literal(c1+c2)caseAdd(left,Literal(
6、0))=>leftcaseAdd(Literal(0),right)=>right}PatternRulesExamples-Simpleconstantfoldingtree.transform{caseAdd(Literal(c1),Literal(c2))=>Literal(c1+c2)caseAdd(left,Literal(0))=>leftcaseAdd(Literal(0),right)=>right}TransformationRulesExamples-Simpleconstantfoldingtree.transform{c
7、aseAdd(Literal(c1),Literal(c2))=>Literal(c1+c2)caseAdd(left,Literal(0))=>leftcaseAdd(Literal(0),right)=>right}RuleBrainsuckBrainsuckisanoptimizingcompileroftheBrainfuckprogramminglanguageBrainsuckBrainsuckisanoptimizingcompileroftheBrainfuckprogramminglanguage-Yeah,it’snotat
8、ypo,justwannaavoidsayingdirtywordsallthetimeduringthetalk:^)BrainsuckBrains