自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(104)
  • 资源 (1)
  • 收藏
  • 关注

原创 spark sql 2.3 源码解读 - whole stage codegen (8)

whole stage codegen 是spark 2.0 以后引入的新特性,所以在最后单独把这一块拿出来讲一下。相关背景可以看spark官方的jira:https://issues.apache.org/jira/browse/SPARK-12795awhole stage codegen对性能有很大的提升。如下图所示,将一棵树翻译成了一段代码执...

2018-08-18 01:02:00 1058 1

原创 spark sql 2.3 源码解读 - whole stage codegen (8)

whole stage codegen 是spark 2.0 以后引入的新特性,所以在最后单独把这一块拿出来讲一下。相关背景可以看spark官方的jira:https://issues.apache.org/jira/browse/SPARK-12795awhole stage codegen对性能有很大的提升。如下图所示,将一课树翻译成了一段代码执行,性能肯定会大幅提升。co...

2018-08-18 00:58:59 3959 1

原创 spark sql 2.3 源码解读 - Execute (7)

终于到了最后一步执行了:/** Internal version of the RDD. Avoids copies and has no schema */lazy val toRdd: RDD[InternalRow] = executedPlan.execute()final def execute(): RDD[InternalRow] =...

2018-08-16 23:53:00 406

原创 spark sql 2.3 源码解读 - Planner (5)

Optimizer得到的是最终的 Logical Plan,Planner 将Logical Plan 转化为 Physical Plan。planner执行plan方法:lazy val sparkPlan: SparkPlan = { SparkSession.setActiveSession(sparkSession) // TODO: ...

2018-08-16 23:52:00 281

原创 spark sql 2.3 源码解读 - Preparations (6)

上一章生成的Physical Plan 还需要经过prepareForExecution这一步,做执行前的一些准备工作,代码如下:/ executedPlan should not be used to initialize any SparkPlan. It should be// only used for execution.lazy val ...

2018-08-16 23:52:00 253

原创 spark sql 2.3 源码解读 - Analyzer (3.2)

根据上一节所讲,Analyzer最关键的代码便是rule的实现了。先整体看一下rule的集合:lazy val batches: Seq[Batch] = Seq( Batch("Hints", fixedPoint, new ResolveHints.ResolveBroadcastHints(conf), ResolveHint...

2018-08-16 23:51:00 236

原创 spark sql 2.3 源码解读 - Optimizer (4)

得到 Resolved Logical Plan 后,将进入优化阶段。后续执行逻辑如下:// 如果缓存中有查询结果,则直接替换为缓存的结果,逻辑不复杂,这里不再展开讲了。lazy val withCachedData: LogicalPlan = { assertAnalyzed() assertSupported() sparkSessi...

2018-08-16 23:51:00 168

原创 spark sql 2.3 源码解读 - Analyzer (3.1)

本章将介绍analyzer 结合 catalog 进行绑定,生成 Resolved Logical Plan.上一步得到的 Unresolved Logical Plan将会执行:lazy val analyzed: LogicalPlan = { SparkSession.setActiveSession(sparkSession) spar...

2018-08-16 23:50:00 231

原创 spark sql 2.3 源码解读 - antlr4 && SparkSqlParser (2.3)

​ 接着上一节,继续讲。还是以 SELECT A.B FROM A 为例。屏幕快照 2018-08-12 下午5.00.15​ 查看AstBuilder逻辑,遍历访问,最终会访问到querySpecification节点:override def visitQuerySpecification( ctx: QueryS...

2018-08-16 23:50:00 329

原创 spark sql 2.3 源码解读 - antlr4 && SparkSqlParser (2.2)

​ 接着上一节,我们看一下antlr4。​ antlr可以根据输入自动生成语法树并可视化的显示出来的开源语法分析器。ANTLR—Another Tool for Language Recognition,其前身是PCCTS,它为包括Java,C++,C#在内的语言提供了一个通过语法描述来自动构造自定义语言的识别器(recognizer),编译...

2018-08-16 23:49:00 298

原创 spark sql 2.3 源码解读 - antlr4 && SparkSqlParser (2.1)

​ 接着上一篇文章,本章将介绍 第1步:sql 语句经过 SqlParser 解析成 Unresolved Logical Plan​ 当我们执行:val sqlDF = spark.sql("SELECT name FROM people order by name")​ 看一下sql函数:def sql(sqlText: S...

2018-08-16 23:48:00 391

原创 spark sql 2.3 源码解读 - 架构概览 (1)

​ spark sql 的前身是shark,类似于 hive, 用户可以基于spark引擎使用sql语句对数据进行分析,而不用去编写程序代码。屏幕快照 2018-08-12 下午2.55.58​ 上图很好的展示了spark sql的功能,提供了 jdbc,console,编程接口三种方式来操作RDD(Resilient Dist...

2018-08-16 23:48:00 225

原创 spark sql 2.3 源码解读 - Execute (7)

终于到了最后一步执行了:/** Internal version of the RDD. Avoids copies and has no schema */lazy val toRdd: RDD[InternalRow] = executedPlan.execute()final def execute(): RDD[InternalRow] = executeQuery { ...

2018-08-16 00:41:38 990

原创 spark sql 2.3 源码解读 - Preparations (6)

上一章生成的Physical Plan 还需要经过prepareForExecution这一步,做执行前的一些准备工作,代码如下:/ executedPlan should not be used to initialize any SparkPlan. It should be// only used for execution.lazy val executedPlan: SparkP...

2018-08-16 00:40:50 598

原创 spark sql 2.3 源码解读 - Planner (5)

Optimizer得到的是最终的 Logical Plan,Planner 将Logical Plan 转化为 Physical Plan。planner执行plan方法:lazy val sparkPlan: SparkPlan = { SparkSession.setActiveSession(sparkSession) // TODO: We use next(), i.e....

2018-08-13 23:29:11 533

原创 spark sql 2.3 源码解读 - Optimizer (4)

得到 Resolved Logical Plan 后,将进入优化阶段。后续执行逻辑如下:// 如果缓存中有查询结果,则直接替换为缓存的结果,逻辑不复杂,这里不再展开讲了。lazy val withCachedData: LogicalPlan = { assertAnalyzed() assertSupported() sparkSession.sharedState.cache...

2018-08-13 18:28:34 704

原创 spark sql 2.3 源码解读 - Analyzer (3.2)

根据上一节所讲,Analyzer最关键的代码便是rule的实现了。先整体看一下rule的集合:lazy val batches: Seq[Batch] = Seq( Batch("Hints", fixedPoint, new ResolveHints.ResolveBroadcastHints(conf), ResolveHints.RemoveAllHints),...

2018-08-13 11:16:16 820

原创 spark sql 2.3 源码解读 - Analyzer (3.1)

本章将介绍analyzer 结合 catalog 进行绑定,生成 Resolved Logical Plan.上一步得到的 Unresolved Logical Plan将会执行:lazy val analyzed: LogicalPlan = { print("before analyzed:" + logical.treeString) SparkSession.setActi...

2018-08-13 10:04:32 542

原创 spark sql 2.3 源码解读 - antlr4 && SparkSqlParser (2.3)

​ 接着上一节,继续讲。还是以 SELECT A.B FROM A 为例。​ 查看AstBuilder逻辑,遍历访问,最终会访问到querySpecification节点:override def visitQuerySpecification( ctx: QuerySpecificationContext): LogicalPlan = withOrigin(ct...

2018-08-12 21:37:50 984

原创 spark sql 2.3 源码解读 - antlr4 && SparkSqlParser (2.2)

​ 接着上一节,我们看一下antlr4。​ antlr可以根据输入自动生成语法树并可视化的显示出来的开源语法分析器。ANTLR—Another Tool for Language Recognition,其前身是PCCTS,它为包括Java,C++,C#在内的语言提供了一个通过语法描述来自动构造自定义语言的识别器(recognizer),编译器(parser)和解释器(transl...

2018-08-12 17:28:44 1698 4

原创 spark sql 2.3 源码解读 - antlr4 && SparkSqlParser (2.1)

接着上一篇文章,本章将介绍 第1步:sql 语句经过 SqlParser 解析成 Unresolved Logical Plan​ 当我们执行:val sqlDF = spark.sql("SELECT name FROM people order by name")​ 看一下sql函数:def sql(sqlText: String): DataFrame = {...

2018-08-12 16:30:01 839

原创 spark sql 2.3 源码解读 - 架构概览 (1)

spark sql 的前身是shark,类似于 hive, 用户可以基于spark引擎使用sql语句对数据进行分析,而不用去编写程序代码。​ 上图很好的展示了spark sql的功能,提供了 jdbc,console,编程接口三种方式来操作RDD(Resilient Distributed Datasets),用户只需要编写sql即可,不需要编写程序代码。​ spark s...

2018-08-12 15:27:43 2388 1

原创 spark应用调试(idea 环境)

spark应用调试(idea 环境)spark shell可以比较方便的分步执行调试spark应用程序,但有时候不是很方便。下面介绍一种直接在idea中调试spark程序的方法。maven 新建工程​ 这个不多赘述,注意一点是pom文件中把依赖的spark的scope的provided去掉,因为我们要在idea中直接运行,不会用spark-...

2018-07-15 18:01:00 230

原创 spark 应用调试(idea 环境)

spark应用调试(idea 环境)spark shell可以比较方便的分步执行调试spark应用程序,但有时候不是很方便。下面介绍一种直接在idea中调试spark程序的方法。maven 新建工程​ 这个不多赘述,注意一点是pom文件中把依赖的spark的scope的provided去掉,因为我们要在idea中直接运行,不会用spark-submit。<d...

2018-07-15 18:00:01 1473

原创 spark源码开发调试(idea环境)

源码项目调试​ 在源代码项目对源码修改后用idea直接进行调试工作clone源码到本地并编译​ git clone git@github.com:apache/spark.git​ ./build/mvn -DskipTests clean packageidea导入工程​ Fi...

2018-07-15 16:15:16 1428

原创 spark源码开发调试(idea环境)

源码项目调试​ 在源代码项目对源码修改后用idea直接进行调试工作clone源码到本地并编译​ git clone git@github.com:apache/spark.git​ ./build/mvn -DskipTests clean packageidea导入工程​ ...

2018-07-15 13:28:00 305

原创 spark 源码编译发布

源码将项目源码clone源码到本地项目地址:https://github.com/apache/sparkgit clone git@github.com:apache/spark.git编译spark项目同时支持maven和sbt两种方式,以maven为例:最简单的编译:./build/mvn -DskipTests clean pack...

2018-07-15 11:04:00 99

原创 spark源码编译发布

源码将项目源码clone源码到本地项目地址:https://github.com/apache/sparkgit clone git@github.com:apache/spark.git编译spark项目同时支持maven和sbt两种方式,以maven为例:最简单的编译:./build/mvn -DskipTests clean package使用 -...

2018-07-15 10:57:09 569

原创 开始在简书写作

mark一下,今天开始在简书写作

2018-07-15 09:18:00 180

原创 95. Unique Binary Search Trees II

Given an integer n, generate all structurally unique BST's (binary search trees) that store values 1...n.For example,Given n = 3, your program should return all 5 unique BST's shown below. 1

2017-08-26 18:56:29 220

原创 96. Unique Binary Search Trees

Given n, how many structurally unique BST's (binary search trees) that store values 1...n?For example,Given n = 3, there are a total of 5 unique BST's. 1 3 3 2 1 \

2017-08-26 17:38:34 228

原创 100. Same Tree

Given two binary trees, write a function to check if they are equal or not.Two binary trees are considered equal if they are structurally identical and the nodes have the same value.# Defi

2017-08-26 17:15:50 244

原创 97. Interleaving String

Given s1, s2, s3, find whether s3 is formed by the interleaving of s1 and s2.For example,Given:s1 = "aabcc",s2 = "dbbca",When s3 = "aadbbcbcac", return true.When s3 = "aadbbbaccc", retur

2017-08-26 17:01:01 228

原创 98. Validate Binary Search Tree

Given a binary tree, determine if it is a valid binary search tree (BST).Assume a BST is defined as follows:The left subtree of a node contains only nodes with keys less than the node's key.Th

2017-08-26 15:36:53 228

转载 gcc 常用命令

1简介2简单编译2.1预处理2.2编译为汇编代码(Compilation)2.3汇编(Assembly)2.4连接(Linking)3多个程序文件的编译4检错5库文件连接5.1编译成可执行文件5.2链接5.3强制链接时使用静态链接库1简介GCC 的意思也只是 GNU C Compiler 而已。

2017-02-17 17:30:23 350

转载 gcc -I 和-L参数

-l参数就是用来指定程序要链接的库,-l参数紧接着就是库名,那么库名跟真正的库文件名有什么关系呢?就拿数学库来说,他的库名是m,他的库文件名是libm.so,很容易看出,把库文件名的头lib和尾.so去掉就是库名了 好了现在我们知道怎么得到库名,当我们自已要用到一个第三方提供的库名字libtest.so,那么我们只要把libtest.so拷贝到/usr/lib里,编译时加上-lte

2017-02-16 21:21:56 725

转载 静态库和动态库编译

我们通常把一些公用函数制作成函数库,供其它程序使用。   函数库分为静态库和动态库两种。   静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库。   动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在。   本文主要通过举例来说明在Linux中如何创建静态库和动态库,以及使用它们。   

2017-02-16 14:37:52 854

转载 makefile学习

[-]Makefile 介绍1 Makefile的规则2 一个示例3 make是如何工作的4 makefile中使用变量5 让make自动推导6 另类风格的makefile7 清空目标文件的规则Makefile 总述1 Makefile里有什么2Makefile的文件名3 引用其它的Makefile4 环境变量 MAKEFILES5 make的工作方式Makefil

2017-02-16 11:20:23 503

转载 解决hash冲突

开放地址法:1.线性探测法       线性再散列法是形式最简单的处理冲突的方法。插入元素时,如果发生冲突,算法会简单的从该槽位置向后循环遍历hash表,直到找到表中的下一个空槽,并将该元素放入该槽中(会导致相同hash值的元素挨在一起和其他hash值对应的槽被占用)。查找元素时,首先散列值所指向的槽,如果没有找到匹配,则继续从该槽遍历hash表,直到:(1)找到相应的元素

2017-02-16 10:44:45 773

转载 MySQL索引背后的数据结构及算法原理

MySQL索引背后的数据结构及算法原理  写在前面的话在编程领域有一句人尽皆知的法则“程序 = 数据结构 + 算法”,我个人是不太赞同这句话(因为我觉得程序不仅仅是数据结构加算法),但是在日常的学习和工作中我确认深深感受到数据结构和算法的重要性,很多东西,如果你愿意稍稍往深处挖一点,那么扑面而来

2016-06-28 17:31:19 1021

php官方参考手册中文版

php官方参考手册中文版,从官网下的,大家参考的神器。

2014-12-08

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除