spark源码
文章平均质量分 79
Yobadman
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
spark1.2.0源码MLlib --- 决策树-01
决策树可以分两类:分类树和回归树,分别用于分类模型和线性回归模型。 首先,看一下spark中的使用案例,代码如下: import org.apache.spark.mllib.tree.DecisionTree import org.apache.spark.mllib.util.MLUtils // Load and parse the data file. val data = MLUt原创 2015-01-26 19:50:54 · 1956 阅读 · 0 评论 -
spark1.2.0源码MLlib-线性回归
当调用LinearRegressionWithSGD.train() 时,代码执行如下: def train( input: RDD[LabeledPoint], numIterations: Int, stepSize: Double, miniBatchFraction: Double, initialWeights: Vect原创 2015-01-24 17:04:40 · 1281 阅读 · 0 评论 -
spark1.2.0源码分析之spark streaming处理数据
在JobScheduler的start()方法中,有一句关键代码会被调用:jobGenerator.start(),这个就是生成job来进行数据的处理,代码如下: /** Start generation of jobs */ def start(): Unit = synchronized { if (eventActor != null) return // generato原创 2015-01-12 11:20:36 · 1005 阅读 · 0 评论 -
spark1.2.0源码分析之ShuffleMapTask
当提交任务集时,Spark会分成两种情况:ShuffleMapTask 和 ResultTask ,接下来分析一下 ShuffleMapTask 中主要做了哪些工作。 private[spark] class ShuffleMapTask( stageId: Int, taskBinary: Broadcast[Array[Byte]], partition: Parti原创 2015-01-10 13:50:59 · 1083 阅读 · 0 评论 -
spark1.2.0源码分析之spark streaming保存数据
本篇主要讲解一下: 当 SocketReceiver 接收到数据之后进行保存的整个流程。 先看一下 SocketReceiver 的 receive() 方法: /** Create a socket connection and receive data until receiver is stopped */ def receive() { var socket: Sock原创 2015-01-12 09:41:22 · 966 阅读 · 0 评论 -
spark1.2.0源码分析之spark streaming执行工作流程
根据官方提供的示例代码,查看一下spark streaming整个执行的流程: val conf = new SparkConf().setMaster("local[2]").setAppName("NetworkWordCount") val ssc = new StreamingContext(conf, Seconds(1)) // Create a DStream that will原创 2015-01-11 15:11:51 · 981 阅读 · 0 评论 -
spark1.2.0源码MLlib --- SVD
奇异值分解(SVD)是主成分分析(PCA)的一种实现,传统方法求PCA是首先计算协方差矩阵,再通过协方差矩阵求特征值与特征向量求出。当矩阵的维度很大时,求协方差矩阵将会呈现平方级的增长,因此可以通过SVD的方法,达到降维的效果。 先看一下spark中的使用案例,代码如下: import org.apache.spark.mllib.linalg.Matrix import org.apache原创 2015-01-28 20:46:09 · 2334 阅读 · 1 评论 -
spark1.2.0源码分析之RDD的reduce操作
reduce操作在RDD中属于action操作,伴随着sc.runJob的调用,源码如下(基于spark 1.2.0版本): def reduce(f: (T, T) => T): T = { val cleanF = sc.clean(f) val reducePartition: Iterator[T] => Option[T] = iter => { if原创 2015-01-09 08:40:43 · 1482 阅读 · 0 评论 -
spark1.2.0源码分析之ShuffledRDD的Stage划分
当调用reduceByKey()、groupByKey()等操作后,会伴随着ShuffledRDD的生成,具体源码如下: def reduceByKey(partitioner: Partitioner, func: (V, V) => V): RDD[(K, V)] = { combineByKey[V]((v: V) => v, func, func, partitioner)原创 2015-01-09 23:26:25 · 2111 阅读 · 0 评论 -
spark1.2.0源码分析之ShuffledRDD抓取数据
当经过shuffle写数据到本地磁盘后,需要从磁盘中将数据读取出来,这个是 ShuffledRDD 做的事情: override def compute(split: Partition, context: TaskContext): Iterator[(K, C)] = { val dep = dependencies.head.asInstanceOf[ShuffleDepend原创 2015-01-11 12:05:42 · 2380 阅读 · 0 评论 -
spark1.2.0源码MLlib --- 决策树-02
本章重点关注分裂节点的划分。 具体执行的代码为:DecisionTree.findSplitsBins() : protected[tree] def findSplitsBins( input: RDD[LabeledPoint], metadata: DecisionTreeMetadata): (Array[Array[Split]], Array[A原创 2015-01-26 21:24:34 · 1155 阅读 · 0 评论 -
spark1.2.0源码MLlib --- 决策树-03
本章重点关注树中各节点分裂过程中,如何将相应的数据进行汇总,以便之后计算节点不纯度及信息增益,最终确定分裂的顺序。 首先,从 DecisionTree.findBestSplits() 开始,这个方法代码很长,按照执行顺序来看,代码如下: val partitionAggregates : RDD[(Int, DTStatsAggregator)] = if (nodeIdCa原创 2015-01-27 21:19:10 · 1504 阅读 · 0 评论 -
spark1.2.0源码MLlib --- 朴素贝叶斯分类器
spark1.2.0中的朴素贝叶斯分类器可以处理多分类的问题,典型应用如:文本分类。 先看一个使用的范例,代码如下: import org.apache.spark.mllib.classification.NaiveBayes import org.apache.spark.mllib.linalg.Vectors import org.apache.spark.mllib.regressi原创 2015-01-25 13:14:14 · 1892 阅读 · 0 评论
分享