
spark
文章平均质量分 62
Xlucas
做自己,做一个最普通的分享者
展开
-
SparkContext原理解析和源码解析
SparkContext主要介绍下面几个点TaskSchedulerDAGSchedulerSparkUI环境是spark1.6.3TaskScheduler初始化机制createTaskScheduler()->TaskSchedulerImpl->SparkDeploySchedulerBackend->initialize()->ScheduleP...原创 2019-01-27 23:01:52 · 405 阅读 · 0 评论 -
Spark编程模型Transformation操作三
join cogroup cartesian coalesce repartitionpackage com.paic.Spark;import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaPairRDD;import org.apache.spark.api.java.JavaRDD;imp...原创 2018-04-08 20:55:38 · 340 阅读 · 0 评论 -
Spark开发-Yarn cluster模式
1、部署及程序运行 YARN cluster模型,顾名思义就是通过Hadoop YARN框架来调度spark应用所需的资源,要将Spark集群运行在YARN模式下,首先需要部署一个YARN集群提供该模式使用,在实际应用中,这两者的因果关系往往是反过来的,这是因为用户有一个Hadoop YARN集群,因此希望将spark也纳入YARN的调度管理中,这样有利于系统的资源共享, 打包 对于spark原创 2017-11-05 23:52:04 · 979 阅读 · 0 评论 -
Spark开发-Shuffle优化
调优概述 大多数Spark作业的性能主要就是消耗在了shuffle环节,因为该环节包含了大量的磁盘IO、序列化、网络数据传输等操作。因此,如果要让作业的性能更上一层楼,就有必要对shuffle过程进行调优。但是也必须提醒大家的是,影响一个Spark作业性能的因素,主要还是代码开发、资源参数以及数据倾斜,shuffle调优只能在整个Spark的性能调优中占到一小部分而已。因此大家务必把握住调优的基本原创 2017-11-15 00:09:30 · 366 阅读 · 0 评论 -
Spark开发-Standalone模式
Standalone模式 在Spark Standalone模式中,spark集群有Master节点和worker节点组成,用户程序通过与master节点交互,申请所需的资源,Worker节点负责具体executor的启动运行。 以WordCount为例,Standalone模式下的应用程序的启动命令如下 ./bin/run-example org.apache.spark.examp原创 2017-10-24 23:06:24 · 666 阅读 · 0 评论 -
Spark开发-Local模式
部署及程序运行 Local模式,就是运行在本地,如果不加任何配置,Spark模式设置为Local模式,以WordCount为例,Local模式下的应用程序的启动命令如下 ./bin/run-example org.apache.spark.examples.JavaWordCount local 在WordCount代码的具体实现中,是根据用户传入的参数来选择运行的模式的,如果需要自己在代码中原创 2017-10-24 00:04:55 · 2706 阅读 · 0 评论 -
Spark开发-Spark运行模式及原理一
核心 1、介绍Spark的运行模块有哪几种 2、TaskScheduler和TaskSchedulerBackend介绍 3、Executor介绍spark的运行模式多种多样,灵活多变,部署在单机上时,既可以用本地模式运行,也可以用伪分布模式运行,而当以分布式集群的方式部署时,也有众多的运行模式可以供选择,这取决于集群的实际情况,底层的资源调度既可以依赖于外部的资源调度框架,原创 2017-10-23 00:28:03 · 667 阅读 · 0 评论 -
Spark开发-运行架构基本概念
1:基本术语 Application: 基于Spark的用户程序,包含了一个driver program 和 集群中多个的executor Driver Program :运行Application的main()函数并且创建SparkContext,通常用SparkContext代表Driver Program Executor: 是为某Application运行在worker node上的一转载 2017-10-13 00:31:06 · 544 阅读 · 0 评论 -
Spark开发-RDD接口编程
一般情况下面RDD包括5个接口partition 分区,一个RDD会有一个或者多个分区 preferredLocations(P) 对于分区P而言,返回数据本地化计算的节点 dependencies() RDD的依赖关系 compute(p,context)原创 2017-10-03 23:57:07 · 1245 阅读 · 0 评论 -
Spark开发-广播变量
核心 1、什么是广播变量 2、为什么需要广播变量 3、案例什么是广播变量 Spark有两种共享变量——累加器、广播变量。广播变量可以让程序高效地向所有工作节点发送一个较大的只读值,以供一个或多个Spark操作使用。为什么需要广播变量 Spark中分布式执行的代码需要传递到各个Executor的Task上运行。对于一些只读、固定的数据(比如从DB中读出的数据),每次都需要Driver广播到各原创 2017-10-01 23:48:27 · 994 阅读 · 0 评论 -
Spark开发-控制操作
控制操作 control operation1、cache(): this.type 2、persist(): this.type 3、persist(newLevel: StorageLevel, allowOverride: Boolean): this.type在spark中对RDD进行持久化操作是一项非常重要的功能,可以将RDD持久化在不同层次的存储介质中,以便后续的操作能够重复使用,这原创 2017-10-09 23:52:41 · 385 阅读 · 0 评论 -
Spark开发-RDD分区重新划分
repartition(numPartitions: Int):RDD[T] coalesce(numPartitions: Int, shuffle: Boolean = false):RDD[T]repartition和coalesce是对RDD的分区进行重新划分,repartition只是coalesce接口中shuffle为true的简易实现,所以这里主要讨论coalesce合并函数该如何原创 2017-10-09 23:36:21 · 2484 阅读 · 0 评论 -
Spark本地调试模式错误解决
1、如果本地运行出现下面这个错误: ERROR Shell: Failed to locate the winutils binary in the hadoop binary path原因:本地没有hadoop环境信息:解决方案: 1.下载winutils的windows版本 GitHub上,有人提供了winutils的windows的版本,项目地址是:https://github...原创 2018-04-05 14:18:26 · 913 阅读 · 0 评论 -
Spark编程模型Transformation操作一
基本Transformation使用 1、map 2、filter 3、flatMap 4、mapPartitions 5、mapPartitionsWithIndex 6、sample案例和注释package com.paic.Spark;import org.apache.spark.SparkConf;import org.apache.spark.api.j...原创 2018-04-05 16:36:20 · 367 阅读 · 0 评论 -
Spark编程模型Transformation操作二
union intersection distinct mapToPair groupByKey reduceByKey sortByKey aggregateByKeypackage com.paic.Spark;import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaPairRDD;...原创 2018-04-06 11:21:26 · 259 阅读 · 0 评论 -
Spark内核架构解析
本文主要介绍了spark运行的大概流程。已经每个组件大概做了什么工作1、Spark-submit提交的时候有多种方式,其实会通过反射的方式,创建和构造一个DriverActor进程出来2、在构造SparkContext的时候,构造出DAGScheduler和TaskScheduler3、DAGScheduler会将job划分为多个stage,然后每个stage创建一个Taskset4、T...原创 2019-01-24 23:32:13 · 400 阅读 · 0 评论 -
Spark中topN和groupTopn讲解
Spark中topN和groupTopn讲解说谎和沉默可以说是现在人类社会里日渐蔓延的两大罪恶。事实上,我们经常说谎,动不动就沉默不语。——村上春树本文主要介绍了Spark中去topN的操作和分组取topN的操作topN的实现思路:1、首先我们需要采用PairRDD的方式来存储数据对象,PairRDD里面的key和value尽量都保存成一样的2、在采用sortByKey对key进行排序3、在采用M...原创 2019-01-14 01:26:25 · 1273 阅读 · 0 评论 -
Spark二次排序的操作
二次排序原理二次排序就是首先按照第一字段排序,然后再对第一字段相同的行按照第二字段排序,注意不能破坏第一次排序的结果例如输入这样的文件,xlucas1 18 aaxlucas2 18 bbxlucas 19 ccaa 20 xlucasaa 17 xlucasxlucas1 17 ccyy 29 xlucas希望输出的结果是从大到小排序yy 29 xlucasxlucas...原创 2019-01-03 00:24:31 · 516 阅读 · 0 评论 -
Spark共享变量
Spark一个非常重要的特性就是共享变量。默认情况下,如果在一个算子的函数中使用到了某个外部的变量,那么这个变量的值会被拷贝到每个task中。此时每个task只能操作自己的那份变量副本。如果多个task想要共享某个变量,那么这种方式是做不到的。 Spark...原创 2018-12-24 00:51:11 · 1541 阅读 · 0 评论 -
RDD持久化原理
Spark非常重要的一个功能特性就是可以将RDD持久化在内存中。当对RDD执行持久化操作时,每个节点都会将自己操作的RDD的partition持久化到内存中,并且在之后对该RDD的反复使用中,直接使用内存缓存的partition。这样的话,对于针对一个RDD反复执行多个操作的场景...原创 2018-12-23 23:40:08 · 1198 阅读 · 0 评论 -
Spark排序--交换排序
之前我们写过简答的worldcount统计的代码,但是我们如何做到按照value来排序呢??伪代码如下 // 执行我们之前做过的单词计数 JavaRDD<String> lines=line.flatMap(new FlatMapFunction<String, String>() { @Override ...原创 2018-12-28 23:32:05 · 394 阅读 · 0 评论 -
Spark核心编程原理
原创 2018-12-11 23:54:05 · 876 阅读 · 0 评论 -
Spark中Action的讲解
主要讲解一下reduce,collect,count,take,saveAsTextFile,countByKeyreduce讲解 // 使用reduce操作对集合中的数字进行累加 // reduce操作的原理: // 首先将第一个和第二个元素,传入call()方法,进行计算,会获取一个结果,比如1 + 2 = 3 //...原创 2018-12-22 00:06:41 · 899 阅读 · 0 评论 -
创建RDD创建方式
RDD的创建方式1、集合创建RDD2、使用本地文件创建RDD3、使用HDFS文件创建RDD集合创建RDD1、如果要通过并行化集合来创建RDD,需要针对程序中的集合,调用SparkContext的parallelize()方法。Spark会将集合中的数据拷贝到集群上去,形成一个分布式的数据集合,也就是一个RDD。相当于是,集合中的部分数据会到一个节点上,而另一部分数据会到其他节点上。然后就...原创 2018-12-17 01:05:59 · 1280 阅读 · 0 评论 -
Spark本地worldcount详细讲解(Scala版本)以及流程
主要介绍Scala来写spark代码的流程package com.xlucas import org.apache.spark.SparkConf import org.apache.spark.SparkContext /** * Created by Xlucas on 2018/12/16. */ object WordCo...原创 2018-12-16 15:11:23 · 1210 阅读 · 1 评论 -
Spark中Transformation的讲解
主要讲解一下map,filter,flatMap,groupByKey,reduceByKey,sortByKey,join,cogroupmap讲解List&lt;Integer&gt; list= Arrays.asList(1,2,3,4,5,6,7,8,9,10); JavaRDD&lt;Integer&gt; line=sc.parallelize(list); ...原创 2018-12-21 00:27:22 · 479 阅读 · 0 评论 -
Spark本地worldcount详细讲解(Java版本)
package com.xlucas;import org.apache.spark.SparkConf;import org.apache.spark.api.java.JavaPairRDD;import org.apache.spark.api.java.JavaRDD;import org.apache.spark.api.java.JavaSparkContext;impor...原创 2018-12-12 23:37:44 · 783 阅读 · 0 评论 -
Spark开发-transformations操作
核心 transformations操作 map(func) 返回一个新的RDD,这个函数的主要功能是对所有元素进行参数上的操作 对每一条输入进行指定的操作,然后为每一条输入返回一个对象 例如 val rdd1=sc.parallelize(Array(1,2,3,4)).map(x=>2*x).collect 这个是对数据 1,2,3,4进行map操作,里面的函数是2*x就是每个元素都原创 2017-09-22 09:39:30 · 500 阅读 · 0 评论 -
Spark开发-Spark内核细说
核心 1、介绍spark的内核集群模式是Standalone的 ● Driver:就是我们用来提交编写的Spark程序的一台机器,在Driver中最重要的一件事—创建SparkContext ● Application :就是我们编写的程序,类里面创建了SparkContext的程序 ● spark-submit: 就是用来向Spark集群提交application的程序,spa原创 2017-09-21 00:25:21 · 459 阅读 · 0 评论 -
Spark开发-SparkSql的开发
核心 1、介绍SparkSQL中的2中RDD转换成DataFrame的方式 2、使用反射推理模式 3、以编程的方式指定schemaSpark SQL支持将现有RDD转换为DataFrames的两种不同方法。第一种方法使用反射来推断包含特定类型对象的RDD模式。当您在编写Spark应用程序时已经知道架构时,这种基于反射的方法会导致更简洁的代码,并且可以很好地运行。 创建DataFrames的第原创 2017-09-28 23:34:56 · 916 阅读 · 1 评论 -
实时流计算Spark Streaming原理介绍
1、Spark Streaming简介1.1 概述Spark Streaming 是Spark核心API的一个扩展,可以实现高吞吐量的、具备容错机制的实时流数据的处理。支持从多种数据源获取数据,包括Kafk、Flume、Twitter、ZeroMQ、Kinesis 以及TCP sockets,从数据源获取数据之后,可以使用诸如map、reduce、join和window等高级函数进行复杂算原创 2016-12-06 00:03:58 · 6421 阅读 · 0 评论 -
Spark Streaming编程一
Spark Streaming属于Spark的核心api,它支持高吞吐量、支持容错的实时流数据处理。 它可以接受来自Kafka, Flume, Twitter, ZeroMQ和TCP Socket的数据源,使用简单的api函数比如 map, reduce, join, window等操作,还可以直接使用内置的机器学习算法、图算法包来处理数据。 它的工作流程像下面的图所示一样,接受到实时数据后,给原创 2016-12-02 07:41:26 · 654 阅读 · 0 评论 -
Spark初级入门详解
问题导读1.spark中什么是Application? 2.spark中什么是Driver Program? 3.Executor负责什么? 4.什么是Stage? 5.客户Spark程序(Driver Program)来操作Spark集群是通过哪个对象来进行的? 6.创建SparkContext一般要经过几个步骤? 7.Spark的运行模式取决于什么? 8. RDD的共享变量有几种?转载 2016-11-15 08:47:35 · 951 阅读 · 0 评论 -
Storage 模块整体架构
问题导读: 1、如何理解Spark模块整体架构? 2、理解Spark中各个类的功能作用都有什么? Storage模块负责了Spark计算过程中所有的存储,包括基于Disk的和基于Memory的。用户在实际编程中,面对的是RDD,可以将RDD的数据通过调用org.apache.spark.rdd.RDD#cache将数据持久化;持久化的动作都是由Storage模块完成的。包括Shuffle过程中原创 2016-11-17 09:00:51 · 996 阅读 · 0 评论 -
Spark 应用程序调优
对于很多刚接触Spark的用户来说,他们可能主要关心数据处理的逻辑,而对于如何高效运行Spark应用程序了解较少。由于Spark是一种分布式内存计算框架,其性能往往受限于CPU、内存、网络等多方面的因素,对于用户来说,如何在有限的资源下高效地运行Spark应用程序显得尤为重要。下面只针对Spark-On-Yarn的一些常用调优策略做详细分析。配置参数优化 资源申请参数 Spark-On-Yarn转载 2016-11-04 10:34:57 · 742 阅读 · 0 评论 -
Spark-shell编程
RDD的partition分片,每个partition由一个task来处理 //parallelize演示 val num=sc.parallelize(1 to 10) 创建一个1到10的数组,默认和executor的个数一样 val doublenum=num.map(_*2) 数组的每个值乘以 2 val threenum=doublenum.filter(_%3 ==0)原创 2016-08-14 23:31:51 · 783 阅读 · 0 评论 -
spark运行架构
概念 job :包含多个task组成的并行计算,往往由spark action催生 stage job的调度单位,对应于taskset taskset 一组关联的相互之间没有shuffle依赖关系的人去组成的任务集 task 被送到某个executor上的工作单元 通常一个partition上面就是一个task1、spark 程序分2部分,一个是以sparkContext的 Driver原创 2016-08-26 00:20:08 · 609 阅读 · 0 评论 -
spark运行模式
spark运行模式列表 基本上,spark的运行模式取决于传递给sparkcontext的deployMode和master环境变量的值,个别模式还需要辅助的程序接口来配合使用,目前master有LOCAL、YARN 、STANDALONE 、MESOS 模式。而deploy-mode必须是cluster、client的一种 spark 1.6里面用数字表示了启动的模式// Cluste原创 2016-09-05 00:26:14 · 2709 阅读 · 0 评论 -
spark编程模型二
并行化scala集合 1、spark使用parallelize方法转换成RDD 2、val rdd1=sc.Parallelize(Array(1,2,3,4,5)) 3、val rdd2=sc.Parallelize(List(0 to 10),5) 4、参数slice是对数据集切片,每一个slice启动一个task进行处理hadoop数据集 1、spark可以将任何hadoop所支持原创 2016-08-09 23:56:19 · 690 阅读 · 0 评论 -
spark编程模型
1、spark应用程序有两部分组成: –driver –executor 2、spark应用程序基本概念 application:基于spark的用户程序,包含了driver program和集群中多个executor driver program:运行application的main()函数并且创建sparkcontext,通常用sparkcontext代表driver program原创 2016-08-09 23:06:05 · 489 阅读 · 0 评论