Catalyst揭秘 Day8 Final 外部数据源和缓存系统 今天是Catalyst部分的收官,主要讲一些杂项内容. 外部数据源处理 什么叫外部数据源,是SparkSql自己支持的一些文件格式,以及一些自己自定义格式的文件开发. 让我们从文件的读取api开始,可以看到最终会创建一个DataFrame,当中比较关键的是relation方法. 首先,会以反射方式获取provider. 我们以json文件为例,其provider为json.DefaultSource.可以看到继承自HadoopFs…
Spark Streaming揭秘 Day8 RDD生命周期研究 今天让我们进一步深入SparkStreaming中RDD的运行机制.从完整的生命周期角度来说,有三个问题是需要解决的: RDD到底是怎么生成的 具体执行的时候和Spark Core上的执行有所不同 运行之后对RDD如何处理,怎么对已有的RDD进行管理 今天主要聚焦于第一个问题. 从DStream开始 DStream类的注释很明确的说明了,DStream中包含以下内容: DStream依赖的其他DStream(第一个DStream是…
在SSIS工程的开发过程中,OLEDB 数据源和目标组件是最常用的数据流组件.从功能上讲,OLEDB 数据源组件用于从OLEDB 提供者(Provider)中获取数据,传递给下游组件,OLEDB提供者是外部数据源,SQL Server是其中一种OLEDB提供者:OLEDB目标组件用于把数据流插入到关系型数据表中.OLEDB数据源和目标组件非常灵活,支持动态传参,功能强大,本文总结了这两个组件经常被用到的属性和用法. 一,数据源组件 查看数据源组件的编辑器,对数据源组件的配置,主要分为三大部分:连…
jQuery在1.2后引入jQuery.data(数据缓存系统),主要的作用是让一组自定义的数据可以DOM元素相关联——浅显的说:就是让一个对象和一组数据一对一的关联. 一组和Element相关的数据如何关联着这个Element一直是web前端的大姨妈,而最初的jQuery事件系统照搬Dean Edwards的addEvent.js:将回调挂载在EventTarget上,这样下来,循环引用是不可忽视的问题.而在web前端中,数据和DOM的关系太过基情和紧张,于是jQuery在1.2中,正式缔造了…
1.实现目标 通过redis缓存数据.(目的不是加快查询的速度,而是减少数据库的负担) 2.所需jar包 注意:jdies和commons-pool两个jar的版本是有对应关系的,注意引入jar包是要配对使用,否则将会报错.因为commons-pooljar的目录根据版本的变化,目录结构会变.前面的版本是org.apache.pool,而后面的版本是org.apache.pool2... style="background-color: #0098dd; color: white; font-s…
Catalyst揭秘 Day7 SQL转为RDD的具体实现 从技术角度,越底层和硬件偶尔越高,可动弹的空间越小,而越高层,可动用的智慧是更多.Catalyst就是个高层的智慧. Catalyst已经逐渐变成了所有Spark框架的解析优化引擎,RDD是通用抽象的数据结果,RDD+Catalyst就构成了Spark的新底层.Catalyst是在RDD基础上进行封装,一旦优化了Catalyst,所有的子框架就都得到了优化. 执行过程 在昨天,我们已经看到SparkPlan会通过prepareForEx…
Catalyst揭秘 Day6 Physical plan解析 物理计划是Spark和Sparksql相对比而言的,因为SparkSql是在Spark core上的一个抽象,物理化就是变成RDD,是SparkSql和Spark core之间的衔接点. Physical Plan也是Catalyst变成Spark作业的最后一个阶段. 生成SparkPlan 从代码,我们可以看到SparkPlan的生成包含了两个步骤,首先会调用SparkPlanner的plan方法,生成SparkPlan,调用pr…
Catalyst揭秘 Day5 optimizer解析 Optimizer是目前为止中catalyst中最重要的部分.主要作用是把analyzed logicalPlan变成optimized LogicalPlan.optimizer和analyzer都继承自RuleExecutor.所以表现形式上都差不多.在analyzer基础上理解起来会比较简单. 总体分析 Optimizer类似analyzer,里面有一系列的batches,里面包含了一系列的rules,每个rule都有个迭代次数.为什…
Catalyst揭秘 Day4 analyzer解析 今天继续解析catalyst,主要讲一下analyzer,在sql语句的处理流程中,analyzer是在sqlparse的基础上,把unresolved logical plan生成logcal plan. Analyzer定义 在analyzer构造的时候,会传入catalog和functionRegistry,其中catelog用来存放用户指定的表名等信息,functionRegistry存放自定义函数,主要用来将未解析的属性和关系进行转…
Catalyst揭秘 Day3 sqlParser解析 今天我们会进入catalyst引擎的第一个模块sqlparser,它是catalyst的前置模块. 树形结构 从昨天的介绍我们可以看到sqlParser会返回一个logicalPlan,它是TreeNode的子类. TreeNode,作为一个树形抽象类,SQL语法的解析的时候,所有的元素都是TreeNode,可能是叶子节点,也可能是树枝节点,可能有0个或多个子节点,其方法都是对树的操作. 通过SQLParser,会把我们的sql语句变成一颗…