Spark简介
Spark是基于内存的分布式批处理系统,它把任务拆分,然后分配到多个的CPU上进行处理,处理数据时产生的中间产物(计算结果)存放在内存中,减少了对磁盘的I/O操作,大大的提升了数据的处理速度,在数据处理和数据挖掘方面比较占优势。
Spark应用场景
Spark对比MapReduce
RDD
RDD是分布式弹性数据集,可以理解一个存储数据的数据结构。Spark会把所要操作的数据,加载到RDD上,即RDD所有操作都是基于RDD来进行的。RDD是只读和可分区。要想对RDD进行操作,只能重新生成一个新的RDD。
RDD的存储:
Shuffle
Shuffle 是划分 DAG 中 stage 的标识,同时影响 Spark 执行速度的关键步骤
窄依赖
窄依赖是指父RDD的每个分区只被子RDD的一个分区所使用。 表现为: 一个父RDD的每一个分区对应于一个子RDD分区。
宽依赖
宽依赖是指父RDD的每个分区都可能被多个子RDD分区所使用。 表现为: 父RDD的每个分区都被多个子RDD分区使用
Transformation
Transformation是RDD的算子类型,它的返回值还是一个RDD。
Transformation操作属于懒操作(算子),不会真正触发RDD的处理计算。
变换方法的共同点:
例如:map(func),flatMap(func)
Action
Action是RDD的算子,它的返回值不是一个RDD。Action操作是返回结果或者将结果写入存储的操作。Action是Spark应用启动执行的触发动作,得到RDD的相关计算结果或将RDD保存到文件系统中。
SparkConf
SparkConf是用来对Spark进行任务参数配置的对象。 是通过键值对的形式,设置Spark任务执行时所需要的参数。 Spark读取任务参数的优先级是: 代码配置>动态参数>配置文件。
SparkContext
SparkContext是Spark的入口,相当于应用程序的main函数。
SparkContext表示与Spark集群的连接,可用于在该集群上创建RDD,记录计算结果和环境配置等信息。
SparkSession
Spark2.0中引入了SparkSession的概念,为用户提供了一个统一的切入点来使用Spark的各项功能。
封装了SparkConf和SparkContext对象,方便用户使用Spark的各种API。
SparkSQL简介
SparkSQL是Spark用来处理结构化数据的一个模块,可以在Spark应用中直接使用SQL语句对数据进行操作。
SQL语句通过SparkSQL模块解析为RDD执行计划,交给SparkCore执行。
通过SparkSession提交SQL语句。任务像普通Spark应用一样,提交到集群中分布式运行。
JDBC:
DataSet:
SparkSQL使用场景
适合: 结构化数据处理。 对数据处理的实时性要求不高的场景 需要处理PB级的大容量数据。
不适合: 实时数据查询。
原文:https://www.cnblogs.com/xiao02fang/p/14279946.html