一、基本原理
Spark Streaming是一种实时流式数据处理机制,用于实时处理实时产生的数据流,具有高吞吐量、容错等特点。Spark Streaming构架如下图:
数据源可以是本地数据、HDFS、TCP socket、Kafka和Flume等等,Spark Streaming从数据源接收数据流,根据时间片将数据流分割成多个批,分批处理,并将处理结果输出到文件系统、数据库或屏幕。
关于Spark Streaming更详细的概念,例如DStream,窗口等概念,此处不详述,后面涉及的时候用实例解释。
二、两种数据源示例
1. TCP socket作为实时数据流
读取数据流以及实时处理代码如下:命名为NetworkWordCount.py
# -*- coding: utf-8 -*-
from pyspark import SparkContext
from pyspark.streaming import StreamingContext
# 创建 sc对象, local[2]表示“本地2个核”, NetworkWordCount为应用名称
sc = SparkContext("local[2]", "NetworkWordCount")
# 设置日志级别
sc.setLogLevel("WARN")
# 创建Spark Streaming Context对象, 此处的5表示5秒钟为一个单位接收数据流
ssc = StreamingContext(sc, 5)