自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(68)
  • 资源 (8)
  • 收藏
  • 关注

原创 欢迎购买《Kafka源码解析与实战》

沉静了大半年终于把Kafka相关的知识整理了下,欢迎大家购买。购买方式:登陆京东,搜索关键字:Kafka源码解析与实战。或者点击此链接https://item.jd.com/12277714.html

2018-01-04 15:50:15 1611

原创 IK中文分词器原理

目录IK中文分词器原理...11.字符类型分类...12.分词大致流程...23.子分词器...33.1 LetterSegmenter. 53.2 CN_QuantifierSegmenter. 73.3 CJKSegmenter. 104.歧义词处理策略...134.1 ik_max_word. 144.2 ik_

2017-05-12 14:39:58 8978

转载 JDBC层次结构和基本构成

本文转载自http://blog.csdn.net/luanlouis/article/details/30060755,感谢分享前言       最近在研究Mybatis框架,由于该框架基于JDBC,想要很好地理解和学习Mybatis,必须要对JDBC有较深入的了解。所以便把JDBC 这个东东翻出来,老调重弹,好好总结一番,作为自己的笔记,也是给读者一个参考~~~本篇

2017-03-07 16:45:28 6375

转载 JDBC驱动加载原理全面解析

本文转载自http://blog.csdn.net/luanlouis/article/details/29850811,感谢分享前言         最近在研究Mybatis框架,由于该框架基于JDBC,想要很好地理解和学习Mybatis,必须要对JDBC有较深入的了解。所以便把JDBC 这个东东翻出来,好好总结一番,作为自己的笔记,也是给读者一个参考~~~以下是本文的组

2017-03-07 14:20:28 3927

转载 ETL介绍与ETL工具比较

本文转载自:http://blog.csdn.net/u013412535/article/details/43462537ETL,是英文 Extract-Transform-Load 的缩写,用来描述将数据从来源端经过萃取(extract)、转置(transform)、加载(load)至目的端的过程。ETL一词较常用在数据仓库,但其对象并不限于数据仓库。ETL负责将分布的、异

2017-03-04 16:10:30 89478 3

原创 Spark算子执行流程详解之八

36.zip将2个rdd相同位置的元素组成KV对/** * Zips this RDD with another one, returning key-value pairs with the first element in each RDD, * second element in each RDD, etc. Assumes that the two RDDs

2017-03-02 12:18:32 2283

原创 Spark算子执行流程详解之七

31.union将2个rdd合并在一起。def union(other: RDD[T]): RDD[T] = withScope {  if (partitioner.isDefined && other.partitioner == partitioner) {//两者的分区函数相同     new PartitionerAwareUnionRDD(sc, Ar

2017-03-02 11:36:52 1182

原创 Spark算子执行流程详解之六

26.coalescecoalesce顾名思义为合并,就是把多个分区的RDD合并成少量分区的RDD,这样可以减少任务调度的时间,但是请记住:合并之后不能保证结果RDD中的每个分区的记录数量是均衡的,因为合并的时候并没有考虑合并前每个分区的记录数,合并只会减少RDD的分区个数,因此并不能利用它来解决数据倾斜的问题。def coalesce(numPartitions: I

2017-03-02 11:11:45 2120

原创 Spark算子执行流程详解之五

22.combineByKey def combineByKey[C](createCombiner:V => C,    mergeValue: (C, V) => C,    mergeCombiners: (C, C) => C,    partitioner: Partitioner,    mapSideCombine: Boole

2017-03-02 10:42:18 1497

原创 Spark算子执行流程详解之四

17.map/** * Return a new RDD by applying a function to all elements of this RDD. */def map[U: ClassTag](f:T => U): RDD[U] = withScope {  val cleanF = sc.clean(f)  new MapPartit

2017-03-02 10:30:51 1573

原创 Spark算子执行流程详解之三

10.aggregate[U: ClassTag](zeroValue: U)(seqOp: (U, T) => U, combOp: (U, U) => U)用与聚合RDD中的元素,先使用seqOp将RDD中每个分区中的T类型元素聚合成U类型,再使用combOp将之前每个分区聚合后的U类型聚合成U类型,特别注意seqOp和combOp都会使用zeroValue的值,zeroValue的类

2017-03-02 10:21:51 2251

原创 Spark算子执行流程详解之二

4.count()def count(): Long = sc.runJob(this, Utils.getIteratorSize_).sum计算数据总量,每个分区各自计算自己的总数,然后汇总到driver端,driver端再把每个分区的总数相加统计出对应rdd的数据量,其流程如下:  5.countApprox( timeou

2017-03-02 10:09:20 2546

原创 Spark算子执行流程详解之一

1.take(num:Int)获取前num条记录。def take(num: Int): Array[T] = withScope {  if (num == 0) {    new Array[T](0)  } else {    val buf = newArrayBuffer[T]    val totalParts = this.pa

2017-03-02 09:55:18 2051

转载 Spark分区器HashPartitioner和RangePartitioner代码详解

1.HashPartitioner分区怎么用源码解析?2.RangePartitioner分区怎么用源码解析?3.定位分区ID怎么用源码解析?      在Spark中分区器直接决定了RDD中分区的个数;也决定了RDD中每条数据经过Shuffle过程属于哪个分区;也决定了Reduce的个数。这三点看起来是不同的方面的,但其深层的含义是一致的。  

2017-02-09 17:23:55 1666

转载 二阶段提交,三阶段提交,Paxos

随着大型网站的各种高并发访问、海量数据处理等场景越来越多,如何实现网站的高可用、易伸缩、可扩展、安全等目标就显得越来越重要。    为了解决这样一系列问题,大型网站的架构也在不断发展。提高大型网站的高可用架构,不得不提的就是分布式。本文主要介绍关于分布式事务,二阶段提交和三阶段提交。    在分布式系统中,为了保证数据的高可用,通常,我们会将数据保留多个副本(replica),这些

2017-02-08 10:17:50 6776

转载 Mongo+Spark

本文转载自:http://www.mongoing.com/tj/mongodb_shanghai_spark介绍按照官方的定义,Spark 是一个通用,快速,适用于大规模数据的处理引擎。通用性:我们可以使用Spark SQL来执行常规分析, Spark Streaming 来流数据处理, 以及用Mlib来执行机器学习等。Java,python,scala及R语言的

2017-02-07 16:17:52 1708

转载 常用的外部排序方法

一、定义问题      外部排序指的是大文件的排序,即待排序的记录存储在外存储器上,待排序的文件无法一次装入内存,需要在内存和外部存储器之间进行多次数据交换,以达到排序整个文件的目的。外部排序最常用的算法是多路归并排序,即将原文件分解成多个能够一次性装入内存的部分,分别把每一部分调入内存完成排序。然后,对已经排序的子文件进行多路归并排序。二、处理过程  (1)按可用内存的大

2017-01-23 14:27:50 14133 1

转载 常用的内部排序方法-非比较排序

这篇文章中我们来探讨一下常用的非比较排序算法:计数排序,基数排序,桶排序。在一定条件下,它们的时间复杂度可以达到O(n)。  这里我们用到的唯一数据结构就是数组,当然我们也可以利用链表来实现下述算法。    计数排序(Counting Sort)   计数排序用到一个额外的计数数组C,根据数组C来将原数组A中的元素排到正确的位置。  通俗地理

2017-01-22 15:25:01 630

转载 常用的内部排序方法-比较排序

所谓的内排序是指所有的数据已经读入内存,在内存中进行排序的算法。排序过程中不需要对磁盘进行读写。同时,内排序也一般假定所有用到的辅助空间也可以直接存在于内存中。与之对应地,另一类排序称作外排序,即内存中无法保存全部数据,需要进行磁盘访问,每次读入部分数据到内存进行排序。

2017-01-22 14:58:03 5251

转载 二叉查找树,红黑树,AVL树,B~/B+树(B-tree),伸展树——优缺点及比较

本文转载自:http://blog.csdn.net/bytxl/article/details/40920165二叉查找树(Binary Search Tree)很显然,二叉查找树的发现完全是因为静态查找结构在动态插入,删除结点所表现出来的无能为力(需要付出极大的代价)。BST 的操作代价分析:    (1) 查找代价: 任何一个数据的查找

2017-01-17 18:56:46 4643

转载 数据结构之跳跃表

本文转载自:http://www.cnblogs.com/xuqiang/archive/2011/05/22/2053516.html. 聊一聊作者的其人其事 跳表是由William Pugh发明。他在 Communications of the ACM June 1990, 33(6) 668-676 发表了Skip lists: a probabilistic alterna

2017-01-17 17:25:32 772

转载 数据结构之伸展树

本文转载自:http://blog.csdn.net/niuox/article/details/8018280二叉查找树(Binary Search Tree)能够支持多种动态集合操作。因此,在信息学竞赛中,二叉排序树起着非常重要的作用,它可以被用来表示有序集合、建立索引或优先队列等。作用于二叉查找树上的基本操作的时间是与树的高度成正比的。对一个含n各节点的完全二叉树,这些操作的

2017-01-17 16:55:41 261

转载 数据结构之Treap树

本文转载自:http://blog.csdn.net/yang_yulei/article/details/46005845之前我们讲到二叉搜索树,从二叉搜索树到2-3树到红黑树到B-树。二叉搜索树的主要问题就是其结构与数据相关,树的深度可能会很大,Treap树就是一种解决二叉搜索树可能深度过大的另一种数据结构。TreapTreap=Tree+Heap。Tr

2017-01-17 16:03:39 589

转载 数据结构之AVL树

原创文章,转载请注明: 转载自董的博客本文链接地址: http://dongxicheng.org/structure/avl/1. 概述AVL树是最早提出的自平衡二叉树,在AVL树中任何节点的两个子树的高度最大差别为一,所以它也被称为高度平衡树。AVL树得名于它的发明者G.M. Adelson-Velsky和E.M. Landis。AVL树种查找、插入和删除在平均和最

2017-01-17 15:38:54 270

转载 数据结构之红黑树

转载自董的博客本文链接地址: http://dongxicheng.org/structure/red-black-tree/1. 简介红黑树是一种自平衡二叉查找树。它的统计性能要好于平衡二叉树(AVL树),因此,红黑树在很多地方都有应用。在C++ STL中,很多部分(目前包括set, multiset, map, multimap)应用了红黑树的变体(SGI STL中

2017-01-17 15:24:17 320

转载 详解LSM Tree

装载自:http://www.cnblogs.com/fxjwind/archive/2012/08/14/2638371.htmlhttp://www.igvita.com/2012/02/06/sstable-and-log-structured-storage-leveldb/, SSTable and Log Structured Storage: LevelD

2017-01-13 15:46:39 8900

转载 从 MongoDB 及 Mysql 谈B-/B+树

装载自:http://blog.csdn.net/wwh578867817/article/details/50493940前两天有位朋友邀请我回答个问题,为什么 MongoDB (索引)使用B-树而 MySQL 使用 B+树?我觉得这个问题非常好,从实际应用的角度来学习数据结构,没有比这更好的方法了。因为像 Mysql 和 MongoDB 这种经久考验的大型软件在设计上都是精益求精的

2017-01-13 15:43:32 3717 3

转载 数据库常见索引解析(B树,B-树,B+树,B*树,位图索引,Hash索引)

B树       即二叉搜索树:       1.所有非叶子结点至多拥有两个儿子(Left和Right);       2.所有结点存储一个关键字;       3.非叶子结点的左指针指向小于其关键字的子树,右指针指向大于其关键字的子树;       如:              B树的搜索,从根结点开始,如果查询的关键字与结点的关键字相等,那么就命中;否则,

2016-12-01 16:56:52 23049 8

原创 Spark-Sql源码解析之八 Codegen

Codegen,动态字节码技术,那么什么是动态字节码技术呢?先看来一段代码,假设SparkPlan为Sortcase class Sort( sortOrder: Seq[SortOrder], global: Boolean, child: SparkPlan) extends UnaryNode { override def requiredChildDis

2016-08-12 13:06:58 6107 1

原创 Spark-Sql源码解析之七 Execute: executed Plan -> RDD[Row]

SparkPlan如何执行呢,SparkPlan是如何转变为RDD[Row]的呢?首先看一段代码:SQLContext sqlContext = new SQLContext(jsc);DataFrame dataFrame = sqlContext.parquetFile(parquetPath);dataFrame.registerTempTable(source);String s

2016-08-12 13:03:25 3300

原创 Spark-Sql源码解析之六 PrepareForExecution: spark plan -> executed Plan

在SparkPlan中插入Shuffle的操作,如果前后2个SparkPlan的outputPartitioning不一样的话,则中间需要插入Shuffle的动作,比分说聚合函数,先局部聚合,然后全局聚合,局部聚合和全局聚合的分区规则是不一样的,中间需要进行一次Shuffle。比方说sql语句:selectSUM(id) from test group by dev_chnid其从逻辑计划

2016-08-12 12:57:38 1612

原创 Spark-Sql源码解析之五 Spark Planner:optimized logical plan –> spark plan

前面描述的主要是逻辑计划,即sql如何被解析成logicalplan,以及logicalplan如何被analyzer以及optimzer,接下来主要介绍逻辑计划如何被翻译成物理计划,即SparkPlan。lazy val sparkPlan: SparkPlan = { SparkPlan.currentContext.set(self) planner.plan(optimized

2016-08-12 10:56:52 3070

原创 Spark-Sql源码解析之四 Optimizer: analyzed logical plan –> optimized logical plan

Optimizer的主要职责是将Analyzer给Resolved的Logical Plan根据不同的优化策略Batch,来对语法树进行优化,优化逻辑计划节点(Logical Plan)以及表达式(Expression),也是转换成物理执行计划的前置。它的工作原理和analyzer一致,也是通过其下的batch里面的Rule[LogicalPlan]来进行处理的。object DefaultO

2016-08-12 10:49:28 2435

原创 Spark-Sql源码解析之三 Analyzer:Unresolved logical plan –> analyzed logical plan

Analyzer主要职责就是将通过Sql Parser未能Resolved的Logical Plan给Resolved掉。lazy val analyzed: LogicalPlan = analyzer.execute(logical)//分析过的LogicalPlanprotected[sql] lazy val analyzer: Analyzer = new Analyzer(c

2016-08-11 16:51:33 3160

原创 Spark-Sql源码解析之二 Sqlparser:sql –> unresolved logical plan

前面章节讲解了Spark-SQL中的核心流程,接下来主要讲解如何将sql语句转化为UnResolved Logical Plan(包含UnresolvedRelation、 UnresolvedFunction、 UnresolvedAttribute)。protected[sql] def parseSql(sql: String): LogicalPlan = { val ret =

2016-08-11 16:18:03 1829

原创 Spark-Sql源码解析之一 引言

1.1 Demo以一个Spark-Sql的例子开始:public class TestSparkSql {    public static void main(String[] args) {        Logger log = Logger.getLogger(TestSparkSql.class);        System.setProperty

2016-08-11 13:38:48 2423

转载 文件系统缓存dirty_ratio与dirty_background_ratio两个参数区别

这两天在调优数据库性能的过程中需要降低操作系统文件Cache对数据库性能的影响,故调研了一些降低文件系统缓存大小的方法,其中一种是通过修改/proc/sys/vm/dirty_background_ration以及/proc/sys/vm/dirty_ratio两个参数的大小来实现。看了不少相关博文的介绍,不过一直弄不清楚这两个参数的区别在哪里,后来看了下面的一篇英文博客才大致了解了它们的不同。

2016-06-20 14:15:35 1238

原创 maven编译spark报PermGen space解决办法

利用mvn -Pyarn -Dhadoop.version=2.4.1 -Dyarn.version=2.4.1 -DskipTests clean package编译spark的时候,maven在编译core模块的时候会异常退出,关键信息为:PermGen space。其原因是maven默认的堆内存设置太小,导致内存溢出。      解决办法:修改maven的配置文件     [root

2016-04-28 15:44:45 1179

原创 kafka源码解析之目录索引

源码系列:kafka源码解析之一kafka诞生的背景kafka源码解析之二kafka内部的专业术语kafka源码解析之三Broker的启动kafka源码解析之四Broker的模块组成kafka源码解析之五Broker处理的request的来源kafka源码解析之六SocketServerkafka源码解析之七KafkaRequestH

2016-04-12 09:08:17 2080 1

原创 kafka源码解析Word版

免积分下载:http://download.csdn.net/detail/wl044090432/9487835目录内容:Kafka源码解析目录Kafka源码解析...1一.        kafka诞生的背景... 21.1 kafka在LinkedIn内部的应用...31.2 它的主要设计目标:...31.3 为什么我们要使用消息系统:

2016-04-11 20:24:09 3084 3

IK中文分词器原理

详细讲解IK分词器原理

2017-05-12

Spark1.4.1 RDD算子详解

结合代码详细描述RDD算子的执行流程,并配上执行流程图

2017-03-02

从PAXOS到ZOOKEEPER分布式一致性原理与实践

从PAXOS到ZOOKEEPER分布式一致性原理与实践

2017-02-07

Spark-Sql源码解析

详细描述了Spark-sql的原理,从sql语句如何转换为逻辑计划,然后是物理计划,最后是rdd

2016-08-22

kafka源码解析新手版本

kafka源码解析,适合新手,免积分下载

2016-04-11

Learning Apache Kafka

有关kafka的介绍,从框架到客户端代码以及周边的生态系统

2016-03-01

linux同时监控cpu磁盘网络的工具nmon

linux同时监控cpu磁盘网络的工具nmon,可以方便性能调优的时候观察服务器的性能瓶颈

2016-02-02

SparkCore源码阅读

绝对原创,SparkCore源码阅读,适合新手

2016-01-29

空空如也

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

TA关注的人

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