
Spark
文章平均质量分 81
Spark的学习分享
喜欢coding的谢同学
2020年网易实习
2021年字节跳动校招
小Red书同名,一起努力学习吧~
展开
-
SparkSql Cache Table类语法编译原理
最近需要在自研的引擎实现SparkSQL的Cache Table逻辑,于是调研了一下相关语法的原理。原创 2022-10-12 19:50:34 · 1944 阅读 · 0 评论 -
大数据实战-微博热搜变化
python爬取flume转发flume沉槽到spark有push和poll两种方式,我这里使用的是较为简单的pusha1.sources = r1a1.sinks = k1a1.channels = c1#sourcea1.sources.r1.type = syslogudpa1.sources.r1.bind = node102a1.sources.r1.port = 7777#channela1.channels.c1.type = memorya1.channels.c原创 2020-11-07 09:18:50 · 1174 阅读 · 3 评论 -
SparkStreaming利用队列生成测试数据源
本地测试的时候,连接kafka等外界源会有些麻烦。如果只是为了逻辑是否能过跑通,可以用RDD队列模拟运行的情况。import org.apache.spark.SparkConfimport org.apache.spark.rdd.RDDimport org.apache.spark.streaming.{Seconds, StreamingContext}import scala.collection.mutableobject Streaming04_QueueStreaming {原创 2020-11-07 09:00:59 · 230 阅读 · 0 评论 -
Windows下的sbt构建Spark项目并打包提交到Linux
https://www.cnblogs.com/yshyee/p/7233455.html原创 2020-10-18 15:03:30 · 456 阅读 · 0 评论 -
聊聊Spark源码中的设计模式(4)-Observer模式
观察者模式在Zookeeper中可能更为典型,本人对于Spark源码和设计模式经验有限,所以后面的内容可能不太准确,欢迎大家批评指正。Spark使用者好像只需要关注数据的处理,并没有直接接触到观察者模式的地方,但这并不代表Spark中没有使用。在我看来,Spark的事件监听机制,就用到了观察者模式。那么事件监听是用在Spark的哪些场景呢?这又得回到Spark的原理了:我们都知道Spark运行的时候分为Driver和Executor,Driver如何通知Executor的core执行某个task原创 2020-09-04 09:26:25 · 411 阅读 · 0 评论 -
聊聊Spark源码中的设计模式(3)-TemplateMethod模式
模板方法模式在Hadoop的MapReduce中非常典型:无论是重写Map还是Reduce,无论是重写getPartition还是compareTo。我们都只是修改了某一部分,MapReduce按照常规流程调用时,就会实现我们期望的业务逻辑。但是在Spark的ScalaAPI中,引入了函数式编程,我们不需要去继承重写,而是直接传递一个计算逻辑给相应的算子。结合上匿名函数,我们不在关心类的继承和方法重写,而可以把注意力集中在函数内部的处理逻辑。-----------------------------那么原创 2020-09-04 09:25:59 · 258 阅读 · 0 评论 -
聊聊Spark源码中的设计模式(2)-Singleton模式
依旧用Builer的这一段代码,不过这次关注的是getOrCreate()。很显然这个含义是获得一个或者创建一个,有点类似单例模式。import org.apache.spark.sql.SparkSessionval spark = SparkSession .builder() .appName("SparkDemo") .master("local[*]") .getOrCreate()就从getOrCreate看看是不是单例吧代码比较长,其实原创 2020-09-04 09:25:31 · 297 阅读 · 0 评论 -
聊聊Spark源码中的设计模式(1)-Bulider模式
Builder模式应该是接触Spark最先接触到的设计模式了,就是下面这段获得SparkSession的代码。 val spark = SparkSession .builder() .appName("SparkDemo") .master("local[*]") .getOrCreate()初学的我也曾疑惑,为什么不直接用new SparkSession(args*)或者new SparkSession(SparkConf)这种形式呢?不妨带原创 2020-09-04 09:25:11 · 535 阅读 · 0 评论 -
Spark源码学习之KV-RDD的常见算子(2)
文章目录前言源码前言上一篇查看了常见ByKey类算子的调用关系,本篇讨论JOIN类的每种算子编程手法还是一直一样,分为三种版本:简单的、指定分区个数的、指定分区类型的。源码JOIN的左外、右外、全连接这些和数据库里的概念对应,应该不需要过多解释。所以本文就只看看cogroup,而cogroup只需要把单个其他表的情况看明白就好了。 def cogroup[W](other: RDD[(K, W)]): RDD[(K, (Iterable[V], Iterable[W]))] = self.w原创 2020-08-11 15:45:00 · 229 阅读 · 0 评论 -
Spark源码学习之KV-RDD的常见算子(1)
文章目录前言源码countByKey()reduceByKey()foldByKeyaggregateByKeygroupByKeycombineByKey前言之前讨论了非KV-RDD常见算子的一些实现,这次来看看KV-RDD。由于算子过多,本文只展示ByKey的常见算子。同样,本文侧重的是看这些算子之间的调用关系,从上图可以发现一些特点。分组聚合类函数最终都调用到了combineByKeyWithClassTag多数算子都有简单版本和指定分区个数的版本:简单版本通过defaultParti原创 2020-08-11 15:44:48 · 298 阅读 · 0 评论 -
Spark源码学习之非KV-RDD的常见算子(3)
前言之前博客探讨了RDD之间的关系,还有转换算子的实现手法,最后这篇简单谈谈行动算子的runJob初学Spark,就知道转换算子懒执行,行动算子才是真正的执行。所谓的执行其实就在于这个runJob。sc.runJob行动算子调用sc即SparkContext的方法,但是sc的runJob方法有很多种。参数列表最长的这个才是关键,别的只是在调用它。def runJob[T, U: ClassTag]( rdd: RDD[T], func: (TaskContext, It原创 2020-07-07 17:24:50 · 153 阅读 · 0 评论 -
Spark源码学习之非KV-RDD的常见算子(2)
前言上一篇博客讨论了RDD的一些算子间的关系,留下了两个疑问,这篇博客先来解决第一个问题:iter到底是个什么?MapPartitionsRDD仔细来看,其实是创建了一个MapPartitionsRDD,iter是它的一个参数 def flatMap[U: ClassTag](f: T => TraversableOnce[U]): RDD[U] = withScope { val cleanF = sc.clean(f) new MapPartitionsRDD[U, T]原创 2020-07-07 17:24:38 · 182 阅读 · 0 评论 -
Spark源码学习之非KV-RDD的常见算子(1)
前言本文主要探讨RDD常用算子之间相互调用的关系distinct这个算子有两个方法,无参数添加了分区数之后再调用有参数的。 def distinct(): RDD[T] = withScope { distinct(partitions.length) }实现的手段比较简单,先map成二元组再reduceByKey,相同的key合并为同一个最后再map还原成原来的样子。 def distinct(numPartitions: Int)(implicit ord: Orderin原创 2020-07-07 17:24:25 · 205 阅读 · 0 评论 -
Spark的RDD操作复习(1)
首先演示创建RDD的三种方式import org.apache.spark.{SparkConf, SparkContext}object CreateRDD { def main(args: Array[String]): Unit = { val sparkConf = new SparkConf().setAppName("CreateRDD").setMaster("lo...原创 2019-11-27 13:36:37 · 218 阅读 · 0 评论 -
Spark机器学习之构建基于Spark的推荐引擎
文章目录前言代码准备工作提取有效特征训练推荐模型使用推荐模型用户推荐物品推荐推荐模型效果的评估均方差K值平均准确率使用MLlib内置的评估函数前言最近发现了本特别好的书,spark机器学习,是我阅读的机器学习相关书籍中最容易上手的。附上豆瓣,也推荐大家购买看看。代码下面的代码全部来自书中,我将REPL环境的代码整理了一下,做了一些注释。准备工作我在idea当中写的代码,当然要先给出ma...原创 2020-03-18 20:33:53 · 542 阅读 · 0 评论 -
Spark学习笔记之简单了解与环境搭建
文章目录简介集群角色运行模式Local模式Standalone模式YARN模式Mesos模式搭建集群解压修改conf环境变量运行SHELL操作简介Spark基于内存运算的分布式计算引擎解决海量数据计算问题集群角色Master : 常驻进程,守护进程。 管理worker,接收提交的任务,进行任务的分配调度。Worker : 常驻进程,守护进程。 报活;管理自己节点上的executor...原创 2019-08-05 20:42:16 · 258 阅读 · 0 评论