Spark
老菜啦
这个作者很懒,什么都没留下…
展开
-
电商推荐系统项目总结
项目架构项目过程中的数据转换注意:图中RDD后跟的不是元素类型,而是其中元素的含义,如:userId即为用户Id,score和rating均为用户对商品的打分离线阶段数据转化流程实时阶段数据转化流程部分代码商品推荐优先级计算(实时推荐阶段)def computeProductScores( simProducts:scala.collection.Map[Int,scala....原创 2020-04-14 20:56:22 · 1621 阅读 · 0 评论 -
Spark内核之shuffle过程总结(流程图绘制)
HashShuffle(1.6后已经取消)流程图通过该流程图可以看出,HashShuffle的最大缺点就是在写入磁盘时,会产生大量文件,文件为为 ReduceTask的个数×MapTask个数,因此有了一种对HashShuffle过程进行优化的shuffle过程,他减少了写入磁盘的文件数,同一个core上调用的不同task共享同一个缓冲区与磁盘文件,这样就减小了文件数,文件数=该任务使用的c...原创 2020-04-11 19:34:41 · 451 阅读 · 0 评论 -
Spark内核之Task调度规则
FIFO调度器源码:private[spark] class FIFOSchedulingAlgorithm extends SchedulingAlgorithm { override def comparator(s1: Schedulable, s2: Schedulable): Boolean = { val priority1 = s1.priority val ...原创 2020-04-11 14:57:05 · 573 阅读 · 0 评论 -
RDD、DataFrame、DataSet的联系和转化
在SparkSQL中Spark为我们提供了两个新的抽象,分别是DataFrame和DataSet。他们和RDD有什么区别呢?首先从版本的产生上来看:RDD (Spark1.0) —> Dataframe(Spark1.3) —> Dataset(Spark1.6)如果同样的数据都给到这三个数据结构,他们分别计算之后,都会给出相同的结果。不同是的他们的执行效率和执行方式。在后期的Sp...原创 2020-04-08 12:22:41 · 162 阅读 · 0 评论 -
Spark SQL概述
Spark SQL是Spark用来处理结构化数据的一个模块,它提供了2个编程抽象:DataFrame和DataSet,并且作为分布式SQL查询引擎的作用。Spark SQL与RDD的关系,类似hive和MR的关系,它是将Spark SQL转换成RDD,然后提交到集群执行,执行效率非常快。Spark SQL的特点1)易整合2)统一的数据访问方式3)兼容Hive4)标准的数据连接Dat...原创 2020-04-08 12:18:12 · 281 阅读 · 0 评论 -
Spark之三大数据结构
RDD具体请查看https://blog.csdn.net/weixin_43497444/article/details/105349406累加器(共享只写)累加器用来对信息进行聚合,通常在向 Spark传递函数时,比如使用 map() 函数或者用 filter() 传条件时,可以使用驱动器程序中定义的变量,但是集群中运行的每个任务都会得到这些变量的一份新的副本,更新这些副本的值也不...原创 2020-04-08 12:05:37 · 864 阅读 · 0 评论 -
SparkCore之数据读取与保存
Spark的数据读取及数据保存可以从两个维度来作区分:文件格式以及文件系统。文件格式分为:Text文件、Json文件、Csv文件、Sequence文件以及Object文件;文件系统分为:本地文件系统、HDFS、HBASE以及数据库。文件类数据读取与保存Text文件数据读取:textFile(String)数据保存: saveAsTextFile(String)Json文件如果JS...原创 2020-04-08 11:55:18 · 297 阅读 · 0 评论 -
SparkCore之Key-Value RDD分区
Spark目前支持Hash分区和Range分区,用户也可以自定义分区,Hash分区为当前的默认分区,Spark中分区器直接决定了RDD中分区的个数、RDD中每条数据经过Shuffle过程属于哪个分区和Reduce的个数注意:(1)只有Key-Value类型的RDD才有分区的,非Key-Value类型的RDD分区的值是None(2)每个RDD的分区ID范围:0~numPartitions-1,...原创 2020-04-08 11:44:10 · 291 阅读 · 0 评论 -
Spark文件切分规则
Spark文件切分过程部分源码如下:numSplits = Math.min(defaultParallelism(默认等于核数),2)goalSize = totalSize / (numSplits == 0 ? 1 : numSplits)splitSize = computeSplitSize(goalSize ,minSize(默认为1),blockSize)protec...原创 2020-04-07 15:36:35 · 2278 阅读 · 0 评论 -
SparkCore之RDD编程(cache和checkpoint的区别)
1.cache操作是基于内存的,而checkpoint是基于磁盘进行的,遇到指定存储路径scala> sc.setCheckpointDir("./ck")2.cache操作是将job运行时的中间结果缓存下来,而checkpoint在job检查到checkpoint时,重新启动一个job来进行checkpoint的保存。因此通常情况下看到第二次才会生效。cache结果:check...原创 2020-04-07 12:20:52 · 323 阅读 · 0 评论 -
SparkCore之RDD编程(RDD的转换之Key-Value类型常用)
(1)partitionBy对pairRDD进行分区操作,如果原有的partionRDD和现有的partionRDD是一致的话就不进行分区, 否则会生成ShuffleRDD,即会产生shuffle过程。(2)reduceByKey(func, [numTasks])在一个(K,V)的RDD上调用,返回一个(K,V)的RDD,使用指定的reduce函数,将相同key的值聚合到一起,reduce...原创 2020-04-06 19:40:02 · 377 阅读 · 0 评论 -
SparkCore之RDD编程(RDD的转换之Value类型常用)
Value类型(1) map(func)返回一个新的RDD,该RDD由每一个输入元素经过func函数转换后组成(2)mapPartitions(func)类似于map,但独立地在RDD的每一个分片上运行,因此在类型为T的RDD上运行时,func的函数类型必须是Iterator[T] => Iterator[U]。假设有N个元素,有M个分区,那么map的函数的将被调用N次,而mapPa...原创 2020-04-06 19:32:04 · 241 阅读 · 0 评论 -
SparkCore之RDD概述
RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据抽象。代码中是一个抽象类,它代表一个弹性的、不可变、可分区、里面的元素可并行计算的集合。RDD的属性一组分区(Partition),即数据集的基本组成单位;一个计算每个分区的函数;RDD之间的依赖关系;一个Partitioner,即RDD的分片函数;一个列表,存储存取每...原创 2020-04-06 19:24:11 · 124 阅读 · 0 评论 -
SparkCore值KV类型四个ByKey的区别和联系
reduceByKey、foldByKey、aggregateByKey、combineByKey之前的区别和联系源码主要逻辑函数比较算子源码reduceByKey( )combineByKetWithClassTag[V] ((v:V)=>v,func,func)foldByKey( )( )combineByKetWithClassTag[V] ((v:...原创 2020-04-06 17:25:24 · 397 阅读 · 0 评论 -
关于Scala中匿名函数中的参数是否可以省略的问题解析
Scala 中定义匿名函数的语法很简单,箭头左边是参数列表,右边是函数体。格式:(…) => {…}如:var inc = (x:Int) => x+1为下面这种函数的缩写def add2 = new Function1[Int,Int]{def apply(x:Int):Int = x+1;}问题1:上面情况下匿名函数的参数可以省略?当函数传入的参数值被调用一次的时候...原创 2020-04-06 11:38:40 · 589 阅读 · 0 评论 -
Spark三种运行模式
Local模式Local模式就是运行在一台计算机上的模式,通常就是用于在本机上练手和测试。它可以通过以下集中方式设置Master。(1)local: 所有计算都运行在一个线程当中,没有任何并行计算,通常我们在本机执行一些测试代码,或者练手,就用这种模式;(2)local[K]: 指定使用几个线程来运行计算,比如local[4]就是运行4个Worker线程。通常我们的Cpu有几个Core,就指...原创 2020-04-05 14:35:10 · 613 阅读 · 0 评论 -
Spark集群角色
1.Master和WorkerSpark特有资源调度系统的Leader。掌管着整个集群的资源信息,类似于Yarn框架中的ResourceManager,主要功能:(1)监听Worker,看Worker是否正常工作; (2)Master对Worker、Application等的管理(接收worker的注册并管理所有的worker,接收client提交的application,(FIFO)调度等...原创 2020-04-05 14:18:56 · 447 阅读 · 0 评论