Spark学习之路
BlockheadLS
乍看之欢,久处不厌。
展开
-
Spark的flatMap和Map的区别
背景:在学习spark的时候,有一个开篇的例子中有两句代码如下所示:val input = sc.textFile(inputFile) val words = input.flatMap(line=>line.split(" ")) 上面两句的意思是,输入一个文件,然后以单空格作为将每一行的输入划分为单词s。 另外,在Spark提供的API中也原创 2015-11-08 18:15:39 · 2060 阅读 · 0 评论 -
Spark下Yarn-Cluster和Yarn-Client的区别
0 首先注意的概念ResourceManager:是集群所有应用程序的资源管理器,能够管理集群的计算资源并为每个Application分配,它是一个纯粹的调度器。 NodeManager:是每一台slave机器的代理,执行应用程序,并监控应用程序的资源使用情况。 Application Master:每一个应用程序都会有一个Application Master,它的主要职责是向RM申请资源、在每原创 2016-11-25 01:51:16 · 7710 阅读 · 3 评论 -
spark on yarn作业运行的jar包缓存优化
原文地址参考自下文这几天一直在追查spark on yarn的作业运行中的jar包分发,以及执行后的jar包删除的问题。从一开始的毫无头绪,到后来逐渐清晰,到后来通过hadoop的两个很简单的参数配置解决了问题。不得不说,虽然问题不大,对某些大牛们来说也真是小case,但是追查问题,定位问题到最终解决问题的过程,对我来说真是很不错的体验和学习过程。下面详细描述一下遇到的问题,以及解决的过程,给后面的转载 2016-12-12 16:13:45 · 1658 阅读 · 0 评论 -
Spark编程指南--官方翻译
说明这是对Spark2.0.1的Spark Programming Guide的翻译,翻译它是想让自己静心看下去,英语水平也不高,所以有的地方难免出错,另外,翻译中的某些地方加入了自己的理解,可能就多添了一句,以便于理解。综述在一个高层次来说,每一个Spark应用程序都会包含driver程序(运行用户main函数的程序)和在集群上执行各种各样的并行操作。Spark提供的主要抽象是RDD(弹性的分布式翻译 2016-10-24 15:10:04 · 1580 阅读 · 2 评论 -
Learning Spark 笔记(七) -- 受益于分区的操作
10 . 单元操作是怎样受益的?以reduceByKey为例子,reduceByKey是在本地归约后再发送到一个主机上再进行归约。如果父RDD是有分区信息的,那么就可能只会在本地归约了,而不会再跨网络发送到其它主机上。二元操作是怎样受益于分区的?比如join(),至少会有一个RDD不会被shuffle。如果两个RDD有同样的partitioner,且被缓存在相同的机器上,则不会shuffle产生,比原创 2016-08-30 17:24:12 · 561 阅读 · 0 评论 -
Learning Spark 笔记(六) -- 指定分区信息改善join()等的操作
9 . 默认情况下,join()操作会对两个RDD的主键做哈希以分区,通过网络将主键相同的元素发送到同一台机器上,然后根据相同的主键再进行连接。例子如下:val sc = new SparkContext()val userData = sc.sequenceFile[UserID,LinkInfo]("hdfs://...").persistdef processNewLogs(logFile原创 2016-08-30 08:40:35 · 2674 阅读 · 0 评论 -
Learning Spark 笔记(五) -- coalesce、repartition
8 . 在Spark中,有两种方法可以重设RDD的分区,coalesce和repartition。先看一下coalesce和repartition的定义:def coalesce(numPartitions: Int, shuffle: Boolean = false){...}def repartition(numPartitions: Int)(implicit ord: Ordering[T原创 2016-08-30 00:08:45 · 847 阅读 · 0 评论 -
Learning Spark 笔记(四) -- reduceByKey、combineByKey
6 . reduceByKey运行多个reduce操作,每个key对应一个reduce操作,只不过reduce返回的是结果,reduceByKey返回的是一个新的RDD。 7 . Spark有很多根据键来合并数据的操作,其中大部分都是用combineByKey来实现的。下面是一个利用combineByKey来计算每个key的value平均值的例子。val input = sc.textFile("原创 2016-08-29 17:37:07 · 1240 阅读 · 0 评论 -
Learning Spark 笔记(三) -- take和persist
4 . take(n)试图最小化访问分区,此操作并不一定以期待的顺序返回数据。 5 . 当持久化一个RDD的时候,计算这个RDD的节点会保存它们的分区。如果缓存了数据的节点出错了,Spark会在需要的时候重新计算丢失的分区。只有遇到action的时候才会真正的执行持久化操作。默认的持久化操作是将数据存放在JVM中作为非序列化对象。如下面wordcount的例子:val lines = sc.原创 2016-08-29 00:58:18 · 1336 阅读 · 0 评论 -
Learning Spark 笔记(一) -- Lazy优势和transformation传参
lazy valuation的优势。它是为大数据而生的,目标是减少迭代次数,节约时间和空间。比如下面的这一段代码 val text = sc.textFile(“…”) val python_lines = text.filter(x=>x.contains(“python”)) python_lines.first 程序只有遇到rdd.first类似的action才会去真正的执行textF原创 2016-08-28 11:17:53 · 1964 阅读 · 0 评论 -
Learning Spark 笔记(二) -- aggregate初值初探
fold和aggregate都需要初值,且每个初值应用到每个分区。例子如下: val input = sc.parallelize(List(1,2,3,4,5,6),3) val result = input.aggregate((0, 0))( (acc, value) => (acc._1 + valu原创 2016-08-28 17:43:30 · 653 阅读 · 0 评论 -
Ubuntu 14 下Spark 1.4.1 安装到eclipse 3.8
一、安装Scala插件打开eclipse,依次选择Help->Install New Software,点击Add按钮,如图所示,其中添加的路径为:http://download.scala-ide.org/sdk/e38/scala29/stable/site,然后点击ok,稍等一下便可以安装完成了。需要联网。原创 2015-11-07 21:45:28 · 635 阅读 · 0 评论 -
Spark的任务调度学习
背景Spark的调度依次是Application调度、Job调度、Stage调度和Task调度,其中在Spark On Yarn下,Application调度是ResourceManager的工作,Application级别资源的调度是Yarn来分配的,这在《Spark下Yarn-Cluster和Yarn-Client的区别中》做了介绍。本文所记录的Spark的任务调度是在Application已经原创 2016-12-07 01:27:05 · 1044 阅读 · 0 评论