SparkStreaming 数据源
SparkStreaming
的数据来源广泛,主要有
- Kafka
- HDFS
- Flume
- DataBases
- Dashboards
- Tcp socket
基本原理
将实时输入的数据流以时间片(秒级)为单位进行拆分,然后经过Spark
引擎之后,以类似批处理的方式处理每个时间片的数据。
用一系列微小的批处理来模拟流计算,并不是真正的流计算
SparkStreaming和Storm
SS | Storm | |
---|---|---|
毫秒级响应 | 无法实现 | 可以实现 |
实时计算 | 可以实时计算 | 可以实时计算 |
容错处理 | RDD数据集更容易、更高效的容错处理 | 高度容错 |
计算方式 | 兼容批量和实时处理数据 | 实时流计算 |
如果需要同时处理实时数据和历史数据,则可以使用
Spark Streaming
- 容错性好
- 可以同时支持实时和历史数据
Spark streaming 运行机制
Spark Streaming
中有个组件Receiver
。长期运行的task
跑在一个Executor
上- 每个
Receiver
负责一个数据源,多种数据来源
编写
-
创建输入
DStream
,定义一个输入源 -
对
DStream
进行各种转换和输出操作,定义流计算 -
启动和结束
SparkStreaming
-
生成一个
StreamingContext
对象,它是程序的主入口1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17streamingContext.start()
streamingContext.stop()
# 创建StreamingContext对象
# 交互式环境创建:pyspark中直接运行
from pyspark.streaming import StreamingContext
ssc = StreamingContext(sc, 1)
# py文件如何创建
from pyspark import SparkContext, SparkConf
from pyspark.streaming import StreamingContext
conf = SparkConf()
conf.setAppName("TestDStream")
conf.setMaster("local[2]") # 启动2个线程
sc = SparkContext(conf=conf)
ssc = StreamingContext(sc, 1)