不同历史版本的接入点不同,而不同项目同时存在不同版本的使用的时候,
就要快速区分不同的API,以版本和基于的数据类型以及应用场景做区分
1.6版本的Spark(Scala API)
1.接入点
离线 1 .:RDD作为API
创建一个SparkConf对象来配置应用,
基于这个SparkConf 创建一个SparkContext对象
然后创建RDD
// val sc = new SparkContext(sparkConf)
// sc.textFile()、sc.sequenceFile()、sc.parallelize()
离线2 :DataSet和DataFrame的API
1.6版本的接入点
SQLContext(sc)
HiveContext(sc)
实时:基于DStream
Spark Streaming --
基于这个SparkConf 创建一个 StreamingContext 对象
然后创建一个 DStream
// ssc = new StreamingContext(sparkConf, Seconds(5)) 或者 new StreamingContext(sc, Seconds(1))
ssc.socketTextStream、
机器学习
the RDD-based APIs in the spark.mllib
the DataFrame-based API in the spark.ml
2.常见数据结构和常见操作
常见数据结构 RDD、pair RDD、共享变量<accumulators>和广播变量
基于RDD的 DStream
以及 DataSet和DataFrame
常见操作:
三类操作
transformation 转化操作
action 行动操作
2.2版本的Spark(Scala API)
离线1、
val conf = new SparkConf().setAppName(appName).setMaster(master)
new SparkContext(conf)
离线2、Spark SQL, DataFrames and Datasets
2.0版本- 接入点
在spark2.0中,引入SparkSession作为DataSet和DataFrame API的切入点,
SparkSession封装了SparkConf、SparkContext和SQLContext。
val spark = SparkSession.builder()
.appName(getProperties("mr.AppName"))
.config("spark.sql.warehouse.dir", warehouseLocation)
.master(getProperties("mr.master"))
.enableHiveSupport()
.getOrCreate()
实时1、Spark Streaming
val conf = new SparkConf().setMaster("local[2]").setAppName("NetworkWordCount")
val ssc = new StreamingContext(conf, Seconds(1))
实时2、 Structure Streaming
01. 微批次处理(micro-batch processing)-
支持流 DataFrame/Dataset 和静态数据集之间的 join
//读取kafka的主题topic,并将数据注册为临时表 dy_test
val spark = SparkSession
.builder()
.config(new SparkConf().setMaster(getProperties("mr.master")))
.appName(getProperties("mr.appName"))
.getOrCreate()
import spark.implicits._
val df = spark
.readStream
.format("kafka")
.option("kafka.bootstrap.servers", getProperties("kafka.brokers"))
.option("subscribe", topicName)
.load()
机器学习
the DataFrame-based API in the spark.ml
图算法
GraphX
2.3版本的Spark(Scala API)
实时2、 Structure Streaming
01. 微批次处理(micro-batch processing)
流和流的 Join 操作。支持内连接和外连接
02.连续模式(continuous mode)-毫秒级低延迟(millisecond low-latency)模式
流读取器连续拉取源数据并处理数据,而不是按指定的触发时间间隔读取一批数据。
通过不断地查询源数据和处理数据,新的记录在到达时立即被处理,将等待时间缩短到毫秒,
满足低延迟的应用程序的需求
支持的数据源:
支持的操作:支持 map-like Dataset 操作,包括投影(projections)、selections以及其他 SQL 函数
Spark 作业可以和 Kubernetes 集群上的其他作业共享资源