spark
文章平均质量分 72
Bro_Rabbit
修猿之路
展开
-
[笔记迁移][Spark开发语言][Scala][1]基础语法
关于Scala解释器(Scala Shell)(1) cmd启动:输入scala,“scala>”(2) REPL:Read(取值)->Evaluation(求值)->Print(打印)->Loop(循环)Scala并非解释型语言,与Java一样需要编译为字节码.class,最终运行于JVM。Scala可以任意调用Java类库。计算表达式原创 2018-11-13 21:11:57 · 382 阅读 · 0 评论 -
[笔记迁移][Spark][4]RDD——分布式弹性数据集相关1
文章目录一、创建RDD二、操作RDD:两类算子一、创建RDDSpark Core(代替MR,进行离线批处理操作)提供了三种创建RDD的方式:创建方式应用场景使用程序种的集合创建主要用于测试,在实际部署到集群运行之前,通过集合构造测试数据集,来测试Spark应用的流程使用本地文件创建主要用于临时性地处理一些存储大量数据地文件使用HDFS文件创建最常用地...原创 2019-07-08 14:23:56 · 147 阅读 · 0 评论 -
[笔记迁移][Spark][5]RDD——分布式弹性数据集相关2
紧接着RDD——分布式弹性数据集相关1,首先补充高级算子cogroup(8) 高级算子 cogroup,与join算子的两点不同之处:[1] join算子将两个RDD按Key连接,结果形成一条条的记录,而cogroup将两个RDD按Key连接后,若相同的Key对应着多条记录,则将记录进行归并。返回JavaPairRDD中的元素形式为<公用键,Tuple2<调用RDD中的值的可迭代容...原创 2019-07-08 15:27:34 · 116 阅读 · 0 评论 -
[笔记迁移][Spark][6]RDD持久化
文章目录1. 为什么RDD需要持久化?2. 节点如何持久化?3. 如何操作持久化?4. Demo5. 持久化策略——persist()参数StorageLevel指定1. 为什么RDD需要持久化?RDD持久化解决的问题: 每当Action操作执行,其之前的Transformation才会被触发,形成RDD链条。Action操作完成后,该RDD会被...原创 2019-07-16 10:03:15 · 184 阅读 · 0 评论 -
[笔记迁移][Spark][10]Spark源码——内核架构3
文章目录7. Job(initialized after SparkContext)7. Job(initialized after SparkContext)(1)一个Application可能包含多个Job,一个Action触发一个Job,运行完前一个Job,代码才会继续向下,触发下一个Job(2)以wordCount为例:textFile -> flatMap(基类RDD中定义)...原创 2019-07-18 14:21:27 · 158 阅读 · 0 评论 -
[笔记迁移][Spark][7]共享变量:Broadcast Variable & Accumulator
文章目录1. 概述2. Broadcast Variable3. Accumulator1. 概述 默认情况下,若在一个算子函数中使用到了来自外部的某个变量,则该变量的值会被拷贝到每个Task中,此时每个Task只能操作自己获得的副本,而无法实现多个Task间的共享。 Spark为此提供了两种共享变量...原创 2019-07-16 11:00:16 · 94 阅读 · 0 评论 -
[笔记迁移][Spark][8]常见应用案例
说明:部分示例在练习中使用了两种实现文章目录1. 基于排序机制的wordcount2. 二次排序(ORDER BY col1,col2)3.TOPN1. 基于排序机制的wordcount/** * 基于排序机制的 wordcount * 需求: * 1. 对文本文件内出现的每个单词统计出其出现的次数 * 2. 按照每个单词出现次数降序排序 * @author Z -Jay * ...原创 2019-07-16 11:39:06 · 124 阅读 · 0 评论 -
[笔记迁移][Spark][11]Spark源码——内核架构4
文章目录8. TaskScheduler——分发Task至Executor9. Executor8. TaskScheduler——分发Task至Executor /** * TaskScheduler提交Task的入口 */ override def submitTasks (taskSet : TaskSet) { val tasks = taskSet.task...原创 2019-07-18 16:13:29 · 227 阅读 · 0 评论 -
[笔记迁移][Spark][8] Spark源码——内核架构1
文章目录1.宏观概览2.窄依赖与宽依赖3.基于Yarn的两种提交模式4. SparkContext5. Master1.宏观概览Applicationspark-submitDriverSparkContextMasterWorkerExecutorJobDAGSchedulerTaskSchedulerShuffleMap TaskResult Task2.窄依...原创 2019-07-17 09:11:28 · 291 阅读 · 0 评论 -
[笔记迁移][Spark][12]Spark源码——内核架构5
文章目录11. Shuffle(最最最最最重要,重点出错、调优目标)11. Shuffle(最最最最最重要,重点出错、调优目标)(1)发生时机: 与Tuple的key操作相关,包括reduceByKey/ groupByKey/ sortByKey/ countByKey/ join/ cogroup(2)特点: &nb...原创 2019-07-24 11:14:25 · 339 阅读 · 0 评论 -
[笔记迁移][Spark][13]Spark源码——内核架构6
文章目录14. CheckPoint14. CheckPoint适用场景:自定义Spark应用程序特别复杂,从初始RDD到整个应用完成有很多步骤,比如超过20个Transformation操作,而且整个应用运行的时间也特别长,比如1-5小时。为什么:对于特别复杂的Spark应用,很有可能需要重复使用某个RDD,若因为节点故障,导致先前持久化过的数据丢失,当再一次使用到该RDD时,就可能又要...原创 2019-07-24 13:31:58 · 426 阅读 · 0 评论 -
[笔记迁移][Spark][9]Spark源码——内核架构2
续上篇,Spark源码——内核架构1(4)最最最最最重要的机制:资源调度schedule() [1]Master总调度——Driver(on Worker)调度机制 /** * Schedule the currently available resources among waiting apps. This method will be call...原创 2019-07-17 17:24:49 · 235 阅读 · 0 评论 -
[笔记迁移][Spark][3]Spark基本工作原理与RDD初探
文章目录一、Spark粗粒度架构一、Spark粗粒度架构原创 2019-07-08 14:22:31 · 345 阅读 · 0 评论 -
[笔记迁移][Spark][2]Spark概述
Spark的核心,即一种新型的大数据计算框架(通用的大数据快速处理引擎),可以基于Hadoop上存储(hdfs、Hive)的大数据进行计算Spark代替Hadoop? No!!!Spark能够替代的只是Hadoop的一部分,如MapReduce计算框架,Hive查询引擎。Spark本身不提供大数据存储功能和调度功能!Spark主要基于内存进行计算, 较基于磁盘和网络的MapRe...原创 2019-07-08 14:20:51 · 124 阅读 · 0 评论 -
[笔记迁移][Spark][1]Spark环境搭建
一、集群搭建Spark*3+Hadoop*1Linux准备工作(1)安装镜像CentOS6.5-minimal.iso(2)配置ip临时配置:1. ifconfig eth0 192.168.109.191 (192,193)2. ping 192.168.109.19x (自己)3. 修改/etc/hosts,添加“ip/主机”映射4. ping {主机名} (自己)永久配置...原创 2018-11-28 15:08:01 · 177 阅读 · 0 评论 -
[笔记迁移][Spark开发语言][Scala][2]流程控制
条件语句(1) 结构上与Java的if-else一致(2) Scala if-else可以返回"值",类似于Java的三元运算符。当然,若在if-else的最后一句进行赋值操作,由于赋值操作本身"没有返回值"(返回Unit),因此if-else"没有返回值"(返回Unit)注意:[1] 当if子句和else子句返回的类型不同时,Scala将自动判断,取两个类型的公共父类型作为返回值类...原创 2018-11-14 15:31:55 · 168 阅读 · 0 评论 -
[笔记迁移][Spark开发语言][Scala][3]数据结构——Array与ArrayBuffer
Scala中的Array代表的含义与Java中一致,即长度不可变的数组。(1) 创建数组 val arr = new Array[Type](num) (2) 访问元素:通过小括号而不是方括号,如a(0), a(1)=1Scala中的ArrayBuffer相当于Java的集合线性表ArrayList(1) 创建ArrayBuffer var arrayBuf = Ar...原创 2018-11-14 17:01:13 · 810 阅读 · 0 评论 -
[笔记迁移][Spark开发语言][Scala][4]数据结构——Map与Tuple
一、 Map创建Map(key -> value)(1) 不可变Map(默认伴生对象) (2) 可变Map(3) 另一种创建方式(4) 空HashMap获取指定key对应的value注意:Scala中,若Map中没有指定key对应的value则会报错,解决办法:[1] 获取之前先用Map.contains()检查[2] 使用Map.getOrElse()...原创 2018-11-14 20:05:17 · 1442 阅读 · 0 评论 -
[笔记迁移][Spark开发语言][Scala][6]面向对象
一、 类方法与函数的定义一样,需要使用&amp;quot;=&amp;quot;,对于“不需要返回”的方法,可以直接省略&amp;quot;=&amp;quot;(隐式返回Unit的过程)。没有参数且只有一条语句的方法可以省略参数列表定界()和方法体定界{}。定义时没有括号的无参方法在外部调用时也不能加括号。域: getter与setter的规则(1) 每个字段必须在定义时指定默认初始化值(2) 定义时未使用pri原创 2018-11-16 08:50:28 · 252 阅读 · 0 评论 -
[笔记迁移][Spark开发语言][Scala][7]面向对象——Trait基础
一、Trait基础将Trait作为接口使用(1) 与Java的接口Interface相似。(2) 但Scala中没有implements关键字,无论继承class还是trait,统一使用关键字extends(3) Scala不支持对class的多重继承,但支持对trait的多重继承。从第二个trait开始需要使用关键字with在Trait中定义具体方法(1) Trait中还可...原创 2018-11-16 09:59:34 · 132 阅读 · 0 评论 -
[笔记迁移][Spark开发语言][Scala][9]隐式转换与隐式参数
一、概述其功效类似于SpringMVC中DataBind中调用的ConversionService(Converters)最核心的任务是定义隐式转换函数(函数!!!函数!!!),即implicit conversion function定义的隐式转换函数,只要在程序内引入,就会被Scala自动使用。当程序中使用到隐式转换函数所接收的参数类型的对象时,Scala会自动将其传入隐式转换函数,...原创 2018-11-16 11:04:29 · 617 阅读 · 0 评论 -
[笔记迁移][Spark开发语言][Scala][10]面向对象——类型参数
Scala类型参数与Java的泛型参数的概念一致泛型类(1) 定义:在类名的后面跟上类型参数列表,用[]包裹(2) 案例(3) Scala可以根据第一字段类型自动推断泛型类型泛型参数(1) 定义:在方法名后跟上类型参数列表,用[]包裹(2) 案例(3) 泛型函数一样可以自动推断类型上边界Bounds(1) 类似Java的&lt;T extends xxx&g...原创 2018-11-16 11:52:29 · 130 阅读 · 0 评论 -
[笔记迁移][Spark开发语言][Scala][11]模式匹配
一、概述模式匹配,类似Java的switch-case语句。但Scala的模式匹配除了可以对值进行匹配之外,还可以对类型进行匹配,对Array和List的元素进行匹配,对case class(即样例类)进行匹配,甚至对有无值(Option)进行匹配二、基础语法定义方式:四个要素变量 match {case 值 =&gt; …}如果值为下划线_,则代表不满足以上所有情况的默认...原创 2018-11-19 10:47:56 · 147 阅读 · 0 评论 -
[笔记迁移][Spark开发语言][Scala][5]函数与异常
Scala与 C++ 一样,既面向过程(独立存在的函数),又面向对象(类,域,方法)Scala函数定义(1) 定义范式 def functionName(arg1Name : arg1Type, arg2Name : arg2Type) = {/*Function Body*/}[1] 定义时,与Python一样,必须由def开头[2] Scala函数要求必须明确指定所有参数的类型...原创 2018-11-15 08:57:43 · 164 阅读 · 0 评论 -
[笔记迁移][Spark开发语言][Scala][12]函数式编程
将函数赋值给变量(1) Scala函数是“一级元素”,可以独立定义,独立存在,而且可以直接将一个函数赋值给一个变量(2) Scala语法规定,将函数赋值给变量时,必须在函数名后面加上空格和下划线匿名函数(类似Java的Lambda表达式,Spark中将大量使用)Scala定义匿名函数的语法规则:(参数名:参数类型) => 函数体高阶函数(1) 由于函数是Scala...原创 2018-11-19 12:29:59 · 163 阅读 · 0 评论 -
[笔记迁移][Spark开发语言][Scala][13]多线程——Actor(了解)
Spark2.x的源码中,已经不在使用Actor进行消息通信,取而代之的是 RPCEndPoint,但用法、作用却是极为相似的 了解RPC/** * An end point for the RPC that defines what functions to trigger given a message. * * It is guaranteed that `onStart`, `re...原创 2018-11-28 14:48:13 · 304 阅读 · 0 评论 -
[笔记迁移][Spark][14]Spark性能优化
文章目录一、概述二、诊断内存消耗三、高性能序列化类库四、优化数据结构五、对多次使用的RDD进行持久化cache/persist或Checkpoint六、使用序列化的持久化级别七、JVM GC机制调优八、提高并行度九、广播共享数据十、数据本地化十一、redeceByKey()与groupByKey()十二、※Shuffle性能优化※一、概述性能瓶颈:CPU、网络带宽、内存(最集中的问题源)=...原创 2019-07-25 08:34:13 · 152 阅读 · 0 评论