分类 原理分析 中的文章

Spark原理-优化规则

子查询优化:查询合并、展开,一行一列,单行多列,多行单列,多行多列,转换为 exist,子查询上提转join,子查询重写(转为semi/anti join);算子合并:CollapseRepartition、CollapseProject、CombineFilters、CombineUnions;常量折叠和强度消减:NullPropagation 、ConstantPropagation、OptimizeIn、ConstantFolding、ReplaceNullWithFalseInPredicate、CombineConcats;算子简化: LikeSimplification、BooleanSimplification、SimplifyBinaryComparison、PruneFilters、EliminateSerialization、SimplifyExtractValueOps; Rewrite/Replace/Eliminate规则:EliminateOuterJoin、EliminateDistinct、EliminateLimits; 下推规则:PushDownPredicates、PushPredicateThroughNonJoin、PushPredicateThroughJoin、LimitPushDown、ColumnPruning

阅读全文

Spark原理-解析过程和Catalog

逻辑计划扩展,注入点。TreeNode的两个子类:Expression,QueryPlan。而 QueryPlan。而QueryPlan的子类是:LogicalPlan、SparkPlan。并将规则分为Batch。 CatalogV2Util#loadTable会解析:库、表、列信息,ResolveReferences。内置的一堆优化规则。查询下推、join下推。SPark的catalog体系,主要拷贝各种SupportRead、Wirte、Dialect,各种数据源的Catalog扩展如HiveCatalog。SessionCatalog 会使用hive 的meta-store走老的catalog路线。自定义函数下推,继承UnboundFunction、ScalarFunction、AggregateFunction,使用Spark的线程上下文classloader 机制加载类,也是用 新Catalog扩展如MyCatalog去执行loadFunction、functionExists

阅读全文

LevelDB 公开的接口

LevelDB 的 src/include目录下的公开接口、跨平台的移植(对文件读写、线程、锁做了简单封装方便了跨平台迁移),读写流程的大致流程等

阅读全文