---Spark-Core Spark-MLlib
文章平均质量分 76
大数据学习二级分类,涉及Spark。
Spark的内存计算能力让他的性能远远超过MR,目前Spark是批处理主力,粗粒度流处理主力,而且推出了数据湖服务,打算完成从数据入到数据出的全过程。
寒 暄
自渡
展开
-
Spark-MLlib协同过滤算法
协同过滤协同过滤概述协同过滤算法是一种基于群体用户或者物品的典型推荐算法,也是目前常用的推荐算法中最常用和最经典的算法。协同过滤算法的确认就是标准推荐算法作为一种可行的机器推荐算法标准步入正规。基于用户的推荐基于用户推荐的过滤算法可以理解为:用户1喜欢物品1,物品3,物品5;用户3喜欢物品1,物品5。从图上可以看出,用户1和用户2选择上的偏好更相似,所以给用户3推荐物品3是合理的。基于物品的推荐基于物品推荐的过滤算法可以理解为:用户3喜欢物品1和物品5,物品3和物品1是有相同标签的物品,所以原创 2020-12-23 11:25:18 · 400 阅读 · 0 评论 -
Spark-MLlib基础数理统计
基础数理统计皮尔逊相关系数ρx y=∑(x−x‾)(y−y‾)∑(x−x‾)2∑(y−y‾)2\rho_x\ _y =\frac{\sum(x-\overline{x})(y-\overline{y})}{\sqrt{\sum(x-\overline{x})^2\sum(y-\overline{y})^2}}ρx y=∑(x−x)2∑(y−y)2∑(x−x)(y−y)皮尔逊相关系数可以看做是两组数据的向量夹角的余弦,用来描述两组数据的分开程度。代码:import原创 2020-12-23 11:21:20 · 139 阅读 · 0 评论 -
Spark-MLlib基础数据类型
MLlib基础数据类型多种数据类型类型名称释义Local vector本地向量集。主要向Spark提供一组可进行操作的数据集合Labeled point向量标签。让用户能够分类不同的数据集合Local matrix本地矩阵。将数据集合以矩阵形式存储在本地计算机中Distributed matrix分布式矩阵。将数据集合以矩阵形式存储在分布式计算机中本地向量集本地向量集分为稀疏型数据集和密集型数据集。密集型数据集会将数据集作为一个集合的形式整体存储,稀原创 2020-12-23 11:20:48 · 218 阅读 · 0 评论 -
SparkRDD的广播变量
广播变量用来高效分发较大的对象。向所有工作节点发送一个较大的只读值,以供一个或多个Spark操作使用。比如,如果你的应用需要向所有节点发送一个较大的只读查询表,甚至是机器学习算法中的一个很大的特征向量,广播变量用起来都很顺手。在多个并行操作中使用同一个变量,但是 Spark会为每个任务分别发送。scala> val broadcastVar = sc.broadcast(Array(1, 2, 3))broadcastVar: org.apache.spark.broadcast.Broad原创 2020-08-05 10:51:51 · 532 阅读 · 0 评论 -
SparkRDD的任务切分
角色SparkRDD的任务角色分为四个:Application每一个SparkContext就是一个ApplicationJobApplication中每一个Action会生成一个JobStage根据RDD之间的依赖关系的不同将Job划分为不同的Stage(以宽依赖为界)TaskStage是一个TaskSet,将Stage划分的结果发送到不同的Executor执行即为一个Task...原创 2020-08-04 17:27:59 · 681 阅读 · 0 评论 -
SparkRDD的函数传递
在实际开发中,我们需要根据实际情况自定义一些RDD的操作,但是我们自定义的RDD操作在Driver端工作,而任务在Executor端工作,这就涉及到了跨进程通信,也就是必须进行序列化。传递函数package com.day1import org.apache.spark.{SparkConf, SparkContext}import org.apache.spark.rdd.RDDobject SeriTest { def main(args: Array[String]): Unit =原创 2020-08-04 16:22:13 · 240 阅读 · 0 评论 -
Spark行动算子(Action)--foreach算子
语法Rdd. foreach(func)源码def foreach(f : scala.Function1[T, scala.Unit]) : scala.Unit = { /* compiled code */ }作用在数据集的每一个元素上,运行函数func进行更新。例子package com.day1import org.apache.spark.rdd.RDDimport org.apache.spark.{SparkConf, SparkContext}object ope原创 2020-08-04 14:39:08 · 1218 阅读 · 0 评论 -
Spark行动算子(Action)--countByKey算子
语法Rdd. countByKey源码def countByKey() : scala.collection.Map[K, scala.Long] = { /* compiled code */ }作用针对(K,V)类型的RDD,返回一个(K,Int)的map,表示每一个key对应的元素个数。例子package com.day1import org.apache.spark.rdd.RDDimport org.apache.spark.{SparkConf, SparkContext}原创 2020-08-04 14:36:49 · 259 阅读 · 0 评论 -
Spark行动算子(Action)--saveAsTextFile算子/saveAsObjectFile算子
语法Rdd. saveAsTextFile(path)Rdd.saveAsObjectFile(path)path是存储路径源码def saveAsTextFile(path : scala.Predef.String) : scala.Unit = { /* compiled code */ }def saveAsObjectFile(path : scala.Predef.String) : scala.Unit = { /* compiled code */ }作用saveAsTex原创 2020-08-04 14:29:52 · 596 阅读 · 0 评论 -
Spark行动算子(Action)--fold算子
语法Rdd.fold(num)(func)num为初始值func为元素与初始值进行的操作源码def fold(zeroValue : T)(op : scala.Function2[T, T, T]) : T = { /* compiled code */ }作用aggregate的简化操作,seqop和combop使用同一函数。例子package com.day1import org.apache.spark.rdd.RDDimport org.apache.spark.{Spa原创 2020-08-04 11:56:10 · 306 阅读 · 0 评论 -
Spark行动算子(Action)--aggregate算子
语法Rdd. aggregate(zeroValue: U)(seqOp: (U, T) ⇒ U, combOp: (U, U) ⇒ U)zeroValue表示分区初始值seqOp表示分区内元素与初始值进行的函数combOp表示每个分区的结果与初始值进行的函数源码def aggregate[U](zeroValue : U)(seqOp : scala.Function2[U, T, U], combOp : scala.Function2[U, U, U])(implicit evidence原创 2020-08-04 11:51:03 · 377 阅读 · 0 评论 -
Spark行动算子(Action)--takeOrdered算子
语法Rdd. takeOrdered(n)源码def takeOrdered(num : scala.Int)(implicit ord : scala.Ordering[T]) : scala.Array[T] = { /* compiled code */ }作用返回RDD中的前n个元素组成的数组。例子package com.day1import org.apache.spark.rdd.RDDimport org.apache.spark.{SparkConf, SparkCon原创 2020-08-04 11:20:20 · 384 阅读 · 0 评论 -
Spark行动算子(Action)--take算子
语法Rdd. take(n)源码def take(num : scala.Int) : scala.Array[T] = { /* compiled code */ }作用返回RDD中的前n个元素。例子package com.day1import org.apache.spark.rdd.RDDimport org.apache.spark.{SparkConf, SparkContext}object oper { def main(args: Array[String]原创 2020-08-04 11:13:31 · 1458 阅读 · 0 评论 -
Spark行动算子(Action)--first算子
语法Rdd. first源码 def first() : T = { /* compiled code */ }作用返回RDD中的第一个元素。例子package com.day1import org.apache.spark.rdd.RDDimport org.apache.spark.{SparkConf, SparkContext}object oper { def main(args: Array[String]): Unit = { val conf原创 2020-08-03 17:12:30 · 526 阅读 · 0 评论 -
Spark行动算子(Action)--count算子
语法Rdd. count源码def count() : scala.Long = { /* compiled code */ }作用返回RDD中元素的个数。例子package com.day1import org.apache.spark.rdd.RDDimport org.apache.spark.{SparkConf, SparkContext}object oper { def main(args: Array[String]): Unit = { v原创 2020-08-03 17:07:20 · 947 阅读 · 0 评论 -
Spark行动算子(Action)--collect算子
语法val newRdd = oldRdd. collect源码def collect() : scala.Array[T] = { /* compiled code */ }作用在驱动程序中,以数组的形式返回数据集的所有元素。例子package com.day1import org.apache.spark.rdd.RDDimport org.apache.spark.{SparkConf, SparkContext}object oper { def main(args原创 2020-08-03 16:53:17 · 1302 阅读 · 0 评论 -
Spark行动算子(Action)--reduce算子
语法val newRdd = oldRdd. reduce(func)源码def reduce(f : scala.Function2[T, T, T]) : T = { /* compiled code */ }作用通过func函数聚集RDD中的所有元素,先聚合分区内数据,再聚合分区间数据。例子package com.day1import org.apache.spark.rdd.RDDimport org.apache.spark.{SparkConf, SparkContext}原创 2020-08-03 16:44:06 · 2638 阅读 · 1 评论 -
SparkRDD算子实例--统计每一个省份广告被点击次数的TOP3
数据源时间戳 省份 城市 用户 广告1516609143867 6 7 64 161516609143869 9 4 75 181516609143869 1 7 87 12...需求统计每一个省份广告被点击次数的TOP3代码package com.day1import org.apache.spark.rdd.RDDimport org.apache.spark.{SparkConf, SparkContext}//需求:统计出每一个省份广告被点击次数的TOP3object原创 2020-08-03 15:27:50 · 1573 阅读 · 0 评论 -
SparkRDD算子--cogroup算子
语法val newRdd = oldRdd. cogroup(otherDataset, [numTasks])otherDataset表示join的对象numTasks表示分区数源码def cogroup[W](other : org.apache.spark.rdd.RDD[scala.Tuple2[K, W]]) : org.apache.spark.rdd.RDD[scala.Tuple2[K, scala.Tuple2[scala.Iterable[V], scala.Iterable[原创 2020-08-03 14:50:19 · 298 阅读 · 0 评论 -
SparkRDD算子--join算子
语法val newRdd = oldRdd. join(otherDataset, [numTasks])otherDataset表示join的对象numTasks表示分区数源码def join[W](other : org.apache.spark.rdd.RDD[scala.Tuple2[K, W]]) : org.apache.spark.rdd.RDD[scala.Tuple2[K, scala.Tuple2[V, W]]] = { /* compiled code */ }作用在类原创 2020-08-03 14:20:10 · 651 阅读 · 0 评论 -
SparkRDD算子--mapValues算子
语法val newRdd = oldRdd. mapValues(func)源码def mapValues[U](f : scala.Function1[V, U]) : org.apache.spark.rdd.RDD[scala.Tuple2[K, U]] = { /* compiled code */ }作用针对于(K,V)形式的类型只对V进行操作例子package com.day1import org.apache.spark.rdd.RDDimport org.apache.原创 2020-08-03 14:10:53 · 3846 阅读 · 0 评论 -
SparkRDD算子--sortByKey算子
语法val newRdd = oldRdd.sortByKey([ascending], [numTasks])ascending控制排序,true为升序,false为降序numTasks表示分区数源码def sortByKey(ascending : scala.Boolean = { /* compiled code */ }, numPartitions : scala.Int = { /* compiled code */ }) : org.apache.spark.rdd.RDD[sca原创 2020-08-03 13:57:43 · 571 阅读 · 0 评论 -
SparkRDD算子--combineByKey算子
语法val newRdd = oldRdd.combineByKey(createCombiner: V => C, mergeValue: (C, V) => C, mergeCombiners: (C, C) => C)createCombiner: combineByKey() 会遍历分区中的所有元素,因此每个元素的键要么还没有遇到过,要么就和之前的某个元素的键相同。如果这是一个新的元素,combineByKey()会使用一个叫作createCombiner()的函数来创建那个键原创 2020-08-03 13:36:56 · 147 阅读 · 0 评论 -
SparkRDD算子--foldByKey算子
语法val newRdd = oldRdd.aggregateByKey(zeroValue: V)(func: (V, V) => V): RDD[(K, V)]zeroValue:给每一个分区中的每一个key一个初始值;func:聚合函数。源码def foldByKey(zeroValue : V)(func : scala.Function2[V, V, V]) : org.apache.spark.rdd.RDD[scala.Tuple2[K, V]] = { /* compiled原创 2020-08-01 16:55:59 · 182 阅读 · 0 评论 -
SparkRDD算子--aggregateByKey算子
语法val newRdd = oldRdd.aggregateByKey(zeroValue:U,[partitioner: Partitioner])zeroValue:给每一个分区中的每一个key一个初始值;seqOp:函数用于在每一个分区中用初始值逐步迭代value;combOp:函数用于合并每个分区中的结果。源码def aggregateByKey[U](zeroValue : U)(seqOp : scala.Function2[U, V, U], combOp : scala.Fun原创 2020-08-01 16:26:04 · 215 阅读 · 0 评论 -
SparkRDD算子--reduceByKey算子
语法val newRdd = oldRdd.reduceByKey(func, [numTasks])func 聚合函数numtasks reduce任务数源码def reduceByKey(func : scala.Function2[V, V, V]) : org.apache.spark.rdd.RDD[scala.Tuple2[K, V]] = { /* compiled code */ }作用对K-V类型的RDD按照Key对value进行聚合。例子package com.day原创 2020-08-01 14:28:19 · 529 阅读 · 0 评论 -
SparkRDD算子--groupByKey算子
语法val newRdd = oldRdd.groupByKey源码 def groupByKey(partitioner : org.apache.spark.Partitioner) : org.apache.spark.rdd.RDD[scala.Tuple2[K, scala.Iterable[V]]] = { /* compiled code */ }作用对K-V类型的RDD按照Key对value分组。例子package com.day1import org.apache.sp原创 2020-08-01 14:04:22 · 675 阅读 · 0 评论 -
SparkRDD算子--partitionBy算子
语法val newRdd = oldRdd1.partitionBy(new org.apache.spark.HashPartitioner(partitions))partitions 表示分区数源码def partitionBy(partitioner : org.apache.spark.Partitioner) : org.apache.spark.rdd.RDD[scala.Tuple2[K, V]] = { /* compiled code */ }作用对K-V类型的RDD重新分原创 2020-08-01 11:38:54 · 1552 阅读 · 0 评论 -
SparkRDD算子--zip算子
语法val newRdd = oldRdd1.zip(oldRdd2)源码def zip[U](other : org.apache.spark.rdd.RDD[U])(implicit evidence$10 : scala.reflect.ClassTag[U]) : org.apache.spark.rdd.RDD[scala.Tuple2[T, U]] = { /* compiled code */ }作用将两个RRD组合为K-V类型。例子package com.day1impo原创 2020-08-01 11:13:02 · 909 阅读 · 0 评论 -
SparkRDD算子--cartesian算子
语法val newRdd = oldRdd1.cartesian(oldRdd2)源码def cartesian[U](other : org.apache.spark.rdd.RDD[U])(implicit evidence$5 : scala.reflect.ClassTag[U]) : org.apache.spark.rdd.RDD[scala.Tuple2[T, U]] = { /* compiled code */ }作用计算两个RDD的笛卡尔积。例子package com.d原创 2020-08-01 10:57:14 · 503 阅读 · 0 评论 -
SparkRDD算子--intersection算子
语法val newRdd = oldRdd1.intersection(oldRdd2)源码def intersection(other : org.apache.spark.rdd.RDD[T]) : org.apache.spark.rdd.RDD[T] = { /* compiled code */ }作用计算两个RDD的交集。例子package com.day1import org.apache.spark.rdd.RDDimport org.apache.spark.{Spa原创 2020-08-01 10:42:04 · 464 阅读 · 0 评论 -
SparkRDD算子--subtract算子
语法val newRdd = oldRdd1.subtract(oldRdd2)源码def subtract(other : org.apache.spark.rdd.RDD[T]) : org.apache.spark.rdd.RDD[T] = { /* compiled code */ }作用计算两个RDD的差集。例子package com.day1import org.apache.spark.rdd.RDDimport org.apache.spark.{SparkConf,原创 2020-08-01 10:26:55 · 784 阅读 · 0 评论 -
SparkRDD算子--union算子
语法val newRdd = oldRdd1.union(oldRdd2)源码def union(other : org.apache.spark.rdd.RDD[T]) : org.apache.spark.rdd.RDD[T] = { /* compiled code */ }作用计算两个RDD的并集。例子package com.day1import org.apache.spark.rdd.RDDimport org.apache.spark.{SparkConf, SparkC原创 2020-08-01 10:12:49 · 2084 阅读 · 0 评论 -
SparkRDD算子--sortBy算子
语法val newRdd = oldRdd.sortBy(func,[ascending], [numTasks])源码def sortBy[K](f : scala.Function1[T, K], ascending : scala.Boolean = { /* compiled code */ }, numPartitions : scala.Int = { /* compiled code */ })(implicit ord : scala.Ordering[K], ctag : scala原创 2020-07-31 17:03:25 · 1219 阅读 · 0 评论 -
SparkRDD算子--repartition算子
语法val newRdd = oldRdd.repartition(numPartitions)numPartitions表示缩减后的分区数源码def repartition(numPartitions : scala.Int)(implicit ord : scala.Ordering[T] = { /* compiled code */ }) : org.apache.spark.rdd.RDD[T] = { /* compiled code */ }作用根据分区数,重新通过网络随机洗牌所原创 2020-07-31 16:33:15 · 1163 阅读 · 0 评论 -
SparkRDD算子--coalesce算子
语法val newRdd = oldRdd.coalesce(numPartitions)numPartitions表示缩减后的分区数源码def coalesce(numPartitions : scala.Int, shuffle : scala.Boolean = { /* compiled code */ }, partitionCoalescer : scala.Option[org.apache.spark.rdd.PartitionCoalescer] = { /* compiled c原创 2020-07-31 16:00:18 · 484 阅读 · 0 评论 -
SparkRDD算子--distinct算子
语法val newRdd = oldRdd.distinct([numTasks])numTasks表示并行度。源码def distinct(numPartitions : scala.Int)(implicit ord : scala.Ordering[T] = { /* compiled code */ }) : org.apache.spark.rdd.RDD[T] = { /* compiled code */ }作用对源RDD进行去重后返回一个新的RDD。默认情况下,只有8个并行任务原创 2020-07-31 15:01:04 · 1400 阅读 · 0 评论 -
SparkRDD算子--sample算子
语法val newRdd = oldRdd.sample(withReplacement, fraction, seed)withReplacement表示是抽出的数据是否放回,true为有放回的抽样,false为无放回的抽样fraction表示随机抽样的数据数量seed用于指定随机数生成器种子源码def sample(withReplacement : scala.Boolean, fraction : scala.Double, seed : scala.Long = { /* compil原创 2020-07-31 14:14:28 · 966 阅读 · 0 评论 -
SparkRDD算子--filter算子
语法val newRdd = oldRdd.filter(func)源码def filter(f : scala.Function1[T, scala.Boolean]) : org.apache.spark.rdd.RDD[T] = { /* compiled code */ }作用过滤。返回一个新的RDD,该RDD由经过func函数计算后返回值为true的输入元素组成。例子package com.day1import org.apache.spark.rdd.RDDimport o原创 2020-07-31 11:35:51 · 2291 阅读 · 0 评论 -
SparkRDD算子--groupBy算子
语法val newRdd = olodRdd.groupBy(func)源码def groupBy[K](f : scala.Function1[T, K])(implicit kt : scala.reflect.ClassTag[K]) : org.apache.spark.rdd.RDD[scala.Tuple2[K, scala.Iterable[T]]] = { /* compiled code */ }作用分组,按照传入函数的返回值进行分组。将相同的key对应的值放入一个迭代器。例原创 2020-07-30 17:25:37 · 3360 阅读 · 0 评论