随笔分类 - spark
摘要:1、aggregate 首先看下 aggregate 函数签名 def aggregate[U: ClassTag](zeroValue: U)(seqOp: (U, T) => U, combOp: (U, U) => U): U 说明 参数zeroValue:seqOp运算符的每个分区的累积结果
阅读全文
摘要:1、文件读取与保存 1.1、Text 文件 1)数据读取:textFile(String) 2)数据保存:saveAsTextFile(String) def main(args: Array[String]): Unit = { //1.创建SparkConf并设置App名称 val conf:
阅读全文
摘要:1、分区介绍 Spark目前支持Hash分区和Range分区,和用户自定义分区。Hash分区为当前的默认分区。分区器直接决定了RDD中分区的个数、RDD中每条数据经过Shuffle后进入哪个分区和Reduce的个数。说明:只有Key-Value类型的RDD才有分区器,非Key-Value类型的RDD
阅读全文
摘要:1、RDD缓存 RDD通过Cache或者Persist方法将前面的计算结果缓存,默认情况下会把数据以序列化的形式缓存在JVM的堆内存中。但是并不是这两个方法被调用时立即缓存,而是触发后面的action时,该RDD将会被缓存在计算节点的内存中,并供后面重用。 代码实现 /** * RDD 缓存 */
阅读全文
摘要:1、Stage任务划分 DAG有向无环图:DAG(Directed Acyclic Graph)有向无环图是由点和线组成的拓扑图形,该图形具有方向,不会闭环。原始的RDD通过一系列的转换就形成了DAG,根据RDD之间的依赖关系的不同将DAG划分成不同的Stage,对于窄依赖,partition的转换
阅读全文
摘要:1、血缘关系&依赖关系 RDD只支持粗粒度转换,即在大量记录上执行的单个操作。将创建RDD的一系列Lineage(血统)记录下来,以便恢复丢失的分区。RDD的Lineage会记录RDD的元数据信息和转换行为,当该RDD的部分分区数据丢失时,它可以根据这些信息来重新运算和恢复丢失的数据分区。 血缘关系
阅读全文
摘要:环境准备 1、pom 文件引入相关依赖&插件 <dependencies> <dependency> <groupId>org.apache.spark</groupId> <artifactId>spark-core_2.12</artifactId> <version>3.0.0</versio
阅读全文
摘要:问题引入 想看一个需求:定义一个 用户类,有一个name 属性和toSting方法: class User { var name: String = _ override def toString: String = s"User{$name}" } 现在要声明两个对象并给name 属性赋值,然后将
阅读全文
摘要:1、Driver & Executor Driver & Executor 是Spark 集群中两个非常重要的角色; 2、Standalone 模式 Standalone模式是Spark自带的资源调动引擎,构建一个由Master + Slave构成的Spark集群,Spark运行在集群中。这个要和H
阅读全文
摘要:1、Spark 运行模式说明 部署Spark集群大体上分为两种模式:单机模式与集群模式;大多数分布式框架都支持单机模式,方便开发者调试框架的运行环境。但是在生产环境中,并不会使用单机模式。因此,后续直接按照集群模式部署Spark集群。下面详细列举了Spark目前支持的部署模式。 Local模式:在本
阅读全文
摘要:DStream 操作和RDD的操作很类似,分为 Transformations 转换和 Output Operations 输出两种,此外转换操作中还有一些比较复杂的算子,如:updateStateByKey(),transform()以及各种 Window 相关算子。 1、无状态转换操作 无状态转
阅读全文
摘要:1、通过RDD队列创建DStream 测试过程中,可以通过使用ssc.queueStream(queueOfRDDs)来创建DStream,每一个推送到这个队列中的RDD,都会作为一个DStream处理。 创建方式 def main(args: Array[String]): Unit = { va
阅读全文
摘要:1、Spark Streaming 概述 1.1、离线&实时 离线计算:计算开始前已知所有输入数据,输入数据不会发生变化,一般计算量级较大,计算时间较长,例如月初对上月整月数据或者一天凌晨对前一天数据进行分析计算。一般使用常用hive作为分析引擎。 实时计算:输入数据是可以以序列化的方式一个个并行的
阅读全文
摘要:1、调优的意义 在大数据分析计算领域,Spark已经成为主流的,非常受欢迎的计算引擎之一。Spark的功能涵盖了大数据领域的批处理、类SQL处理、实时计算、机器学习、图计算等多种不同类型的计算操作,应用范围广泛、前景一片大好,今天许多公司作为主流计算引擎使用,大多数Spark使用者,最初都是想提高计
阅读全文
摘要:1、数据准备 本次练习的数据是采集电商网站的用户行为数据,主要包含用户的4种行为:搜索、点击、下单和支付 数据格式 数据采用_分割字段 每一行表示用户的一个行为,所以每一行只能是四种行为中的一种。 如果搜索关键字是null,表示这次不是搜索 如果点击的品类id和产品id是-1表示这次不是点击 下单行
阅读全文
摘要:Spark 为了达到高并发,高吞吐数据处理能力除了封装RDD外,也封装了另外两个数据对象 广播变量:分布式共享只读变量 累加器:分布式共享只写变量 1、广播变量 1.1、广播变量存在的意义 如果我们需要在分布式计算里面分发大对象,例如:集合,字典或者黑白名单等,这个都会有 Driver 端进行分发,
阅读全文
摘要:接下来我们看下常见RDD的转换算子和行动算子。 1、基本RDD的操作 首先来讲讲那些转化操作和行动操作受任意数据类型的RDD支持。 1.1、针对每个元素的转换操作 你很可能会用到的两个最常用的转化操作是map()和filter()。转化操作map()接收一个函数,把这个函数用于RDD中的每个元素,将
阅读全文
摘要:Spark 中的 RDD 其实是一个分布式对象集合,每个 RDD 都被分为多个分区,这些分区运行在集群的不同的节点上。RDD 支持转换操作和行动操作。转化操作会由一个 RDD 生成一个新的 RDD ,例如 scala> val lines = sc.textFile("README.md") 这里通
阅读全文
摘要:spark 为了达到高并发,高吞吐数据处理能力封装了三大数据对象; RDD 弹性分布式数据集 累加器:分布式共享只写变量 广播变量:分布式共享只读变量 1、RDD 概述 1.1、RDD 引入之IO流 首先回顾下java 中IO的设计模式 IO流和RDD之间的关系 1.2、什么是RDD RDD(Res
阅读全文
摘要:一、Yarn 部署简介 Spark自身提供计算资源,无需其他框架提供资源。But 这种方式降低了和其他第三方资源框架的耦合性,独立性非常强。请注意:Spark主要是计算框架,而不是资源调度框架,所以本身提供的资源调度并不是它的强项,所以还是和其他专业的资源调度框架集成会更靠谱一些。接下来我们看一下在
阅读全文