首页  

Spark知识点小结     所属分类 spark 浏览量 572
Master Worker
Driver SparkContext 
worker node
executor  task   cache 
cluster manager

Spark Core
RDD Resilient Distributed Dataset
不可变 分区 并行计算
RDD两种操作  转化 transformation 和 行动 action
惰性计算模式  第一次行动操作 ,才会真正计算

分片(Partition)  一个分片一个计算任务
RDD compute函数
依赖关系 RDD之间的血缘关系
RDD 分片函数   Partitioner  HashPartitioner RangePartitioner
Partition 优先位置 preferred location

cache persist checkpoint 
cache 调用 persist方法,存储等级 memory only
persist默认memory only,可自定义存储级别
cache将RDD以及RDD的血统(记录RDD如何产生)缓存到内存中
checkpoint 将数据持久化,切断之前的血缘关系
persist存储到磁盘时,生命周期由blockManager掌管
当blockManager停止时,persist存储的内容也会被清空
checkpoint 将RDD持久化到HDFS或本地文件夹,需手动remove 

分片数据计算顺序
缓存 -> checkpoint -> 根据血缘关系计算

宽依赖 一对多或多对多
窄依赖 一对一或多对一  父RDD每个分区只被子RDD的一个分区使用

Stage 由一组并行的task组成
碰到宽依赖就划分stage,每个stage包含一个或多个task任务
将这些task以taskSet的形式提交给TaskScheduler运行


累加器(Accumulator)和 广播变量(Broadcast)

累加器   只能在driver端定义,driver端读取,不能在Executor端读取
广播变量 只能在driver端定义,在Executor端读取,Executor不能修改

Spark SQL
RDD DataFrame DataSet

RDD
DataFrame  添加列
Dataset  添加列类型
DataFrame = Dataset [Row]


RDD
DataFrame
定制化内存管理,二进制堆外内存
查询计划通过Spark catalyst optimiser进行优化
编译期缺少类型安全检查,可能导致运行时出错

Dataset
支持编解码器
DataFrame=Dataset[Row]
强类型

使用DataFrame和Dataset时,需要import spark.implicits._ 包
DataFrame和Dataset 使用模式匹配获取各个字段的值和类型
RDD不支持sparksql操作


 SparkSQL join的三种实现方式 

Spark Streaming
使用Kafka数据源
Spark Kafka 连接
DirectKafkaInputDStream
KafkaInputDStream


KafkaUtils#createStream(Receiver方式)
使用高级API,自动维护偏移量
效率低并且容易丢失数据,灵活性差

KafkaUtils#createDirectStream(直连方式) 推荐
使用底层API
Offest 手工维护,灵活性好

Spark Streaming 有状态计算
基于滑动窗口的转化操作(window)和追踪状态变化的转化操作(updateStateByKey)

Spark Streaming的不间断运行
检查点机制(checkpoint)
WAL预写日志
背压机制
工作节点容错(reciver worker driver)

上一篇     下一篇
数据仓库名词解释

sparkSQL和presto比较

SparkSQL join的三种实现方式

Flink核心技术要点

spark map和mapPartitions

spark map算子各种写法