
Spark
LMRzero
一名热爱编程的小白,希望与大家一起学习进步
时间序列分类 / Spark / 实时计算
展开
-
Spark中基于模型的特征选择实现
Spark中基于模型的特征选择实现基于模型的特征选择方法是一种常见的特征选择方法,此类方法是基于我们构造的最终模型来选择适合的特征子集。目前Spark中可直接使用的特征选择方法有限,下面介绍基于Spark中的交叉验证来进行特征选择的方法。1.Spark交叉验证由于本文介绍的特征选择方法的实现是基于交叉验证实现的,本节中我们先介绍Spark的交叉验证的使用。这里使用的模型是简单的逻辑回归模型,我们通过交叉验证来找到迭代次数等参数。import org.apache.spark.ml.classific原创 2020-12-19 10:19:56 · 820 阅读 · 1 评论 -
你弄懂了Spark的Shuffle实现方式吗?手把手带你解析Spark的Sort Shuffle和Tungsten-Sort Shuffle
在大数据计算框架中,Shuffle阶段的设计优劣是决定性能好坏的关键因素之一。 为了深入理解Shuffle阶段的各个细节, 并进一步在理解的基础上优化代码,减少不必要的Shuffle开销, 我将通过几篇博客深入分析Spark Shuffle阶段的源代码实现,详细解析Spark Shuffle阶段的实现细节,主要内容包括Shuffle机制框架详解和当前Spark 2.12 中已经支持的Shuffle阶段的2种设计与实现。本文主要介绍当前Spark 2.12 中已经支持的Shuffle阶段的2种设计与实现。.原创 2020-05-17 14:05:13 · 4160 阅读 · 2 评论 -
还搞不懂Spark的Shuffle机制吗?基于Spark2.12的Shuffle机制框架详解(理论和源码相结合)
在大数据计算框架中,Shuffle阶段的设计优劣是决定性能好坏的关键因素之一。 为了深入理解Shuffle阶段的各个细节, 并进一步在理解的基础上优化代码,减少不必要的Shuffle开销, 我将通过几篇博客深入分析Spark Shuffle阶段的源代码实现,详细解析Spark Shuffle阶段的实现细节,主要内容包括Shuffle机制框架详解和当前Spark 2.12 中已经支持的Shuffle阶段的2种设计与实现。本文主要介绍Shuffle机制框架详解。Spark的Shuffle机制框架详解1. .原创 2020-05-15 19:54:28 · 4100 阅读 · 0 评论 -
你真的懂Spark吗?手把手带你解析Spark-Submit提交应用程序过程(Spark2.12)
前几篇博客详细解析了Spark的Job触发机制、Spark的DAGScheduler调度机制、Spark的TaskScheduler调度机制、Spark调度器的终端通信SchedulerBackend和Spark的Executor启动,在对这些源码进行分析之后,头脑中十分混乱,对于各个机制的具体执行过程不是十分了解。网上的各种分析博客也写得不是十分清晰,于是就开始了Spark任务提交流程的分析。本博客的Spark版本为2.12,是以Standalone Cluster部署模式为基础进行分析。Spark.原创 2020-05-14 12:05:02 · 4584 阅读 · 2 评论 -
一文搞定Spark的Executor创建与启动
Executor 是 Spark 中执行任务的进程, 它能被不同的调度模式所调度, 例如 Standalone、 Mesos 、 Yam。 博客主要讲解 Standalone 调度模式下的 Executor的创建与启动,通过对源代码的分析,能够使得我们更加深入了解Executor的创建和启动过程,也深入了解Spark等分布式框架的设计思路。原创 2020-05-12 13:55:17 · 7070 阅读 · 2 评论 -
一文搞定Spark的调度器的通信终端(SchedulerBackend)
本博客中的Spark版本为2.12SchedulerBackend1. SchedulerBackend原理2. SchedulerBackend启动流程源代码2.1. SchedulerBackend源代码解析2.2. Spark程序的注册机制3. Spark 程序对计算资源 Executor的管理1. SchedulerBackend原理以Spark Standalone部署方式为例, StandaloneSchedulerBackend在启动时构造了StandaloneAppClient实例,原创 2020-05-11 22:49:51 · 5179 阅读 · 0 评论 -
一文搞懂Spark的Task调度器(TaskScheduler)
TaskScheduler的核心任务是提交TaskSet到集群运算并汇报结果。为TaskSet创建和维护一个TaskSetManager, 并追踪任务的本地性及错误信息。遇到Straggle任务会放到其他结点进行重试。向DAGScheduler汇报执行情况, 包括在Shuffle输出丢失时报告fetch failed错误等信息。TaskScheduler底层调度器1. TaskScheduler原理剖析2. TaskScheduler源代码解析2.1 TaskScheduler 实例化源代码.原创 2020-05-10 13:11:29 · 7450 阅读 · 0 评论 -
一文搞定Spark的DAG调度器(DAGScheduler)
Spark的DAG调度器1. DAG定义2. DAG实例化3. DAGScheduler划分Stage的原理4 DAGScheduer划分Stage的源代码1. DAG定义RDD DAG还 构建了基于数据流之上的操作算子流, 即RDD的各个分区的数据总共会经过哪些 Transformation和 Action这两种类型的一系列操作的调度运行, 从而RDD先被Transformation操作转换为新的RDD, 然后被Action操作 将结果反馈到Driver Program或存储到外部存储系统上 。上原创 2020-05-10 10:42:47 · 9436 阅读 · 1 评论 -
一文搞定Spark的job触发机制
Spark的job触发机制1.Spark运行的基本概念1.1 Driver1.2 Cluster Manager1.3 Executor1.4 Worker2. Spark Job触发机制2.1 Job的逻辑执行2.2 Job的物理执行3. Job触发流程源代码解析1.Spark运行的基本概念本博客讲解的内容都是基于Spark的Standalone部署模式。在Standalone部署模式下, Spark比在YARN和Mesos更容易使用,因为不需要其他的东西。如果是基于Spark来处理数据,基本上一个S原创 2020-05-09 19:37:33 · 6371 阅读 · 1 评论 -
Spark MLlib之ALS
数据:1,1,5.01,2,1.01,3,5.01,4,1.02,1,5.02,2,1.02,3,5.02,4,1.03,1,1.03,2,5.03,3,1.03,4,5.04,1,1.04,2,5.04,3,1.04,4,5.0代码:package mllib.recommendimport org.apache.log4j.{Level, L...原创 2019-06-11 18:23:43 · 7943 阅读 · 1 评论 -
Spark MLlib之FPGrowth
package mllib.associationruleimport org.apache.spark.mllib.fpm.{FPGrowth, FPGrowthModel}import org.apache.spark.rdd.RDDimport org.apache.spark.{SparkConf, SparkContext}import scala.io.{Buffered...原创 2019-06-11 15:59:46 · 7928 阅读 · 1 评论 -
Spark MLlib之Kmeans聚类
package mllib.clusterimport org.apache.spark.mllib.clustering.{KMeans, KMeansModel}import org.apache.spark.mllib.linalgimport org.apache.spark.mllib.linalg.{DenseVector, Vectors}import org.apach...原创 2019-06-10 23:32:08 · 8740 阅读 · 1 评论 -
Spark源码阅读之SparkContext
这次主要阅读了SparkContext中的初始化部分,也就是Spark程序启动时执行的一系列步骤。 try { //克隆Spark配置文件 _conf = config.clone() /** * 检查非法或不建议使用的配置设置。 为前者抛出异常。 * 不是幂等的-可能会使此conf对象发生突变,以将不赞成使用的设置转换为受支持的设置。 ...原创 2020-04-10 21:38:24 · 6930 阅读 · 1 评论 -
Spark源码阅读之SparkSession
spark从1.6之后一直以SparkSession作为用户编程的主要api,本文主要是记录自己SparkSession源码阅读过程,没有过多注释,方便后期查阅。/** * The entry point to programming Spark with the Dataset and DataFrame API. * 使用Dataset和DataFrame API编程Spark的...原创 2020-04-07 19:56:44 · 7937 阅读 · 1 评论 -
Spark源码阅读之RDD
本文主要是注释RDD源代码,部分注释是翻译源代码中的英文注释。由于本人水平有限,如有错误的地方还请大家指出。/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed wi...原创 2020-04-06 21:21:12 · 7179 阅读 · 1 评论 -
Spark源码阅读之环境配置(Windows)
Spark源码阅读是深入理解大数据框架和性能调优的必要过程,本文介绍在Windows环境下配置Spark源码阅读环境。相关工具本文是在windows下的IDEA上搭建源码阅读环境,下列配置仅供参考,可以根据实际情况更改,不需要完全一致。-Java1.8-Scala 2.12.8-Maven 3.5.4-Git 2.7.2-Intellij IDEA 2019.1.1...原创 2020-04-05 21:17:41 · 6732 阅读 · 1 评论 -
Lamda架构日志分析流水线(二)
构建日志分析数据流水线1.使用Flume进行日志采集 Flume 是 Cloudera 开发的日志收集系统, 具有分布式、高可用等特点, 为大数据日志采集、汇总聚合和转储传输提供了支持。 为了保证 Flume 的扩展性和灵活性, 在日志系统中定制各类数据发送方及数据接收方。 同时 Flume 提供对数据进行简单处理, 并写各种数据到接受方的能力。Flume 的核心是把数据从...原创 2019-06-15 20:25:31 · 5239 阅读 · 1 评论 -
Hive根据HBase数据库中的表建立外部表
HBase中已经存在表weblogs,有一个列族info,该列族中存在7个列。create external table weblogs( id string, datetime string, userid string, searchname string, retorder string, cliorder string, ...原创 2019-06-07 23:47:05 · 8899 阅读 · 1 评论 -
Hadoop与Spark
Spark是通过借鉴HadoopMapReduce发展而来的,继承了其分布式并行计算的优点,并改进了MapReduce明显的缺陷,具体体现在以下几个方面。(1) Spark把中间数据放在内存中,迭代运算效率高。MapReduce中的计算结果是保存在磁盘上,这样势必会影响整体的运行速度,而Spark支待DAG图的分布式并行计算的编程框架,减少了迭代过程中数据的落地,提高了处理效率。(2)Sp...原创 2019-05-30 20:46:36 · 9304 阅读 · 0 评论 -
Spark MLlib之朴素贝叶斯
由于没有找到相应的数据,就自己写了一个随机生成数据的代码:package mllibimport org.apache.spark.{SparkConf, SparkContext}import org.apache.spark.mllib.linalg.DenseVectorimport org.apache.spark.mllib.regression.LabeledPoint...原创 2019-06-10 15:03:39 · 5604 阅读 · 0 评论 -
Spark MLlib之保序回归(二)
package mllibimport org.apache.spark.rdd.RDDimport org.apache.spark.{SparkConf, SparkContext}import scala.io.{BufferedSource, Source}import org.apache.spark.mllib.regression.{IsotonicRegression...原创 2019-06-10 12:00:18 · 5450 阅读 · 1 评论 -
Spark MLlib之保序回归(一)
保序回归:一种可以使资源利用率最大化的算法当前IT行业虚拟化比较流行,使用这种方式,找到合适的判断参数,就可以使用此算法使资源得到最大程度的合理利用。1.数学定义保序回归是回归算法的一种,基本思想是:给定一个有限的实数集合,训练一个模型来最小化下列方程:并且满足下列约束条件:2.算法过程说明从该序列的首元素往后观察,一旦出现乱序现象停止该轮观察,从该乱序元素开始逐个...转载 2019-06-10 09:15:39 · 7729 阅读 · 1 评论 -
Caused by: java.lang.NoSuchMethodError: org.apache.spark.sql.catalyst.analysis.TypeCoercion$.findTig
Spark连接MongoDB报错:Caused by: java.lang.NoSuchMethodError: org.apache.spark.sql.catalyst.analysis.TypeCoercion$.findTightestCommonTypeOfTwo()Lscala/Function2; at com.mongodb.spark.sql.MongoIn...原创 2019-06-12 22:23:59 · 9021 阅读 · 5 评论 -
Spark核心之aggregate和fold
在本文中介绍Spark中Action的两种算子,分别是aggregate和fold,其方法定义分别为:• aggregate[U](zeroValue: U)(seqOp: (U, T) => U, combOp: (U, U) => U)(implicit argO: ClassTag[U]): U• fold(zero Value: T)(op: (T, T) =...原创 2019-05-31 19:15:59 · 9366 阅读 · 1 评论 -
Spark核心之combineByKey详解
在这里单独讲解combineByKey是因为在练习这个算子是一开始并不是太明白,希望能我的实验过程能帮到其它和我有相同疑惑的人。首先给出combineByKey的定义,其他的细节暂时忽略。 def combineByKey[C]( createCombiner: V => C, mergeValue: (C, V) => C, mergeCom...原创 2019-05-31 17:32:54 · 17937 阅读 · 7 评论 -
Lamda架构日志分析流水线(一)
本文中我们首先介绍Lamda架构,然后基于Lamda架构设计我们的饿日志数据分析流水线架构。1.Lamda架构 日志分析中既有离线大规模分析的需求,又有实时性的需求,这就可以通过采用Lamda架构构建日志分析流水线。1.1Lamda架构简介 Lambda架构的目的是为大数据分析应用程序提供一个低响应延迟的组合数据传输环境。 Lambda 系统架...原创 2019-06-05 18:47:48 · 8262 阅读 · 1 评论 -
Spark算子演示(Java1.8)
本文中使用Java演示了Spark中的Transform和Action两种类型的算子(部分)。import org.apache.spark.HashPartitioner;import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaPairRDD;import org.apache.spark.api....原创 2019-05-27 13:17:20 · 9039 阅读 · 0 评论 -
Spark Streaming WordCount
import org.apache.spark.streaming.dstream.{DStream, ReceiverInputDStream}import org.apache.spark.streaming.{Milliseconds, StreamingContext}import org.apache.spark.{SparkConf, SparkContext}/** *...原创 2019-05-26 22:57:55 · 8967 阅读 · 0 评论 -
Spark执行流程
四个步骤:1.构建DAG(调用RDD上的算子)2.DAGScheduler将DAG切分Stage(切分的依据是Shuffle),将Stage中生成的Task以TaskSet的形式给TaskScheduler3.TaskScheduler调度Task(根据资源情况将Task调度到相应的Executor中执行)4.Executor接收Task,然后将Task丢入到线程池中执行...原创 2019-05-16 23:29:00 · 7571 阅读 · 0 评论 -
spark sql 配置hive
1.安装MySQL(hive的元数据库)并创建一个普通用户,并且授权CREATE USER 'xiaoniu'@'%' IDENTIFIED BY '123568';GRANT ALL PRIVILEGES ON hivedb.* TO 'lin'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;FLUSH PRIVILEGES;...原创 2019-05-16 23:27:07 · 8947 阅读 · 1 评论 -
Spark读取MongoDB数据
先给出相应的maven依赖 <dependencies> <!-- 导入scala的依赖 --> <dependency> <groupId>org.scala-lang</groupId> <artifactId>scala...原创 2019-06-12 23:11:34 · 13083 阅读 · 1 评论 -
Spark 2.0 RPC通信层设计原理分析
Spark RPC层设计概况spark2.0的RPC框架是基于优秀的网络通信框架Netty开发的,我们先把Spark中与RPC相关的一些类的关系梳理一下,为了能够更直观地表达RPC的设计,我们先从类的设计来看,如下图所示:从上图左半边可以看出,RPC通信主要有RpcEnv、RpcEndpoint、RpcEndpointRef这三个核心类。RpcEndpoint是一个通信端...转载 2019-06-01 19:45:00 · 7825 阅读 · 1 评论 -
Spark MLlib之逻辑回归
package mllibimport org.apache.log4j.{Level, Logger}import org.apache.spark.mllib.classification.{LogisticRegressionModel, LogisticRegressionWithLBFGS}import org.apache.spark.mllib.evaluation.Mul...原创 2019-06-09 23:10:41 · 8127 阅读 · 1 评论 -
Spark MLlib之线性回归
package mllibimport org.apache.log4j.{Level, Logger}import org.apache.spark.mllib.regression.{LabeledPoint, LinearRegressionModel, LinearRegressionWithSGD}import org.apache.spark.mllib.util.Linea...原创 2019-06-09 21:06:22 · 7768 阅读 · 1 评论 -
Spark MLlib分布式矩阵
package mllibimport org.apache.spark.mllib.linalgimport org.apache.spark.mllib.linalg.{DenseMatrix, Matrix, SingularValueDecomposition, Vectors}import org.apache.spark.mllib.linalg.distributed.{B...原创 2019-06-09 19:43:02 · 8014 阅读 · 1 评论 -
Spark2.x源码阅读之SparkContext
本文主要介绍SparkContext中的主构造方法里面的内容,即初始化过程,其中调用的方法留到后面讲解。 try { _conf = config.clone()//拷贝配置文件 _conf.validateSettings()//验证配置文件是否有错 if (!_conf.contains("spark.master")) {//没有设置Master则报错 ...原创 2019-06-19 09:45:55 · 6764 阅读 · 1 评论 -
Spark核心之top、take和takeOrdered
top、take和takeOrdered三种算子都是Spark中的Action操作,当原始数据集太大时,可以采用上述三个算子展示数据,下面分别介绍三个算子:(1)takeOrdered算子takeOrdered(num: Int)(implicit ord: Ordering[T]): Array[T]关于top算子在源码中的解释如下: /** * Returns the...原创 2019-06-02 12:49:43 · 14403 阅读 · 2 评论 -
Spark MLlib统计操作
package mllibimport org.apache.spark.mllib.linalgimport org.apache.spark.mllib.linalg.{Matrix, Vectors}import org.apache.spark.mllib.stat.{MultivariateStatisticalSummary, Statistics}import org....原创 2019-06-07 20:41:25 · 7794 阅读 · 1 评论 -
解决升级Spark2.0之后,DataFrame map操作报错
当我们在使用spark1.6的时候,当我们创建SQLContext读取一个文件之后,返回DataFrame类型的变量可以直接.map操作,不会报错。但是升级之后会包一个错误,如下: 报错:No implicits found for parameter evidence$6: Encoder[Unit] 主要的错误原因为: ******error: Unabl...转载 2019-06-13 17:20:53 · 5756 阅读 · 0 评论 -
Spark MLlib数据格式
package mllibimport breeze.optimize.proximal.LogisticGeneratorimport org.apache.log4j.{Level, Logger}import org.apache.spark.mllib.regression.LabeledPointimport org.apache.spark.{SparkConf, Spar...原创 2019-06-06 22:03:48 · 7915 阅读 · 1 评论