摘要:
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 阅读全文
摘要:
设置快捷键的原因 近期在梳理Spark ,为了便于获取上下文对象:即以下代码 //获取 SparkConf 并设置应用名称*本地模式 val conf: SparkConf = new SparkConf().setAppName("Spark").setMaster("local[8]") //获 阅读全文
摘要:
1、Spark 运行模式说明 部署Spark集群大体上分为两种模式:单机模式与集群模式;大多数分布式框架都支持单机模式,方便开发者调试框架的运行环境。但是在生产环境中,并不会使用单机模式。因此,后续直接按照集群模式部署Spark集群。下面详细列举了Spark目前支持的部署模式。 Local模式:在本 阅读全文