# Spark Streaming
Spark streaming是Spark核心API的一個擴展,它對實時流式數據的處理具有可擴展性、高吞吐量、可容錯性等特點。我們可以從kafka、flume、Twitter、 ZeroMQ、Kinesis等源獲取數據,也可以通過由高階函數map、reduce、join、window等組成的復雜算法計算出數據。最后,處理后的數據可以推送到文件系統、數據庫、實時儀表盤中。事實上,你可以將處理后的數據應用到Spark的[機器學習算法](https://spark.apache.org/docs/latest/mllib-guide.html)、[圖處理算法](https://spark.apache.org/docs/latest/graphx-programming-guide.html)中去。

在內部,它的工作原理如下圖所示。Spark Streaming接收實時的輸入數據流,然后將這些數據切分為批數據供Spark引擎處理,Spark引擎將數據生成最終的結果數據。

Spark Streaming支持一個高層的抽象,叫做離散流(`discretized stream`)或者`DStream`,它代表連續的數據流。DStream既可以利用從Kafka, Flume和Kinesis等源獲取的輸入數據流創建,也可以在其他DStream的基礎上通過高階函數獲得。在內部,DStream是由一系列RDDs組成。
本指南指導用戶開始利用DStream編寫Spark Streaming程序。用戶能夠利用scala、java或者Python來編寫Spark Streaming程序。
注意:Spark 1.2已經為Spark Streaming引入了Python API。它的所有DStream transformations和幾乎所有的輸出操作可以在scala和java接口中使用。然而,它只支持基本的源如文本文件或者套接字上的文本數據。諸如flume、kafka等外部的源的API會在將來引入。
- [一個快速的例子](#)
- [基本概念](#)
- [關聯](#)
- [初始化StreamingContext](#)
- [離散流](#)
- [輸入DStreams](#)
- [DStream中的轉換](#)
- [DStream的輸出操作](#)
- [緩存或持久化](#)
- [Checkpointing](#)
- [部署應用程序](#)
- [監控應用程序](#)
- [性能調優](#)
- [減少批數據的執行時間](#)
- [設置正確的批容量](#)
- [內存調優](#)
- [容錯語義](#)
- Introduction
- 快速上手
- Spark Shell
- 獨立應用程序
- 開始翻滾吧!
- 編程指南
- 引入 Spark
- 初始化 Spark
- Spark RDDs
- 并行集合
- 外部數據集
- RDD 操作
- RDD持久化
- 共享變量
- 從這里開始
- Spark Streaming
- 一個快速的例子
- 基本概念
- 關聯
- 初始化StreamingContext
- 離散流
- 輸入DStreams
- DStream中的轉換
- DStream的輸出操作
- 緩存或持久化
- Checkpointing
- 部署應用程序
- 監控應用程序
- 性能調優
- 減少批數據的執行時間
- 設置正確的批容量
- 內存調優
- 容錯語義
- Spark SQL
- 開始
- 數據源
- RDDs
- parquet文件
- JSON數據集
- Hive表
- 性能調優
- 其它SQL接口
- 編寫語言集成(Language-Integrated)的相關查詢
- Spark SQL數據類型
- GraphX編程指南
- 開始
- 屬性圖
- 圖操作符
- Pregel API
- 圖構造者
- 頂點和邊RDDs
- 圖算法
- 例子
- 提交應用程序
- 獨立運行Spark
- 在yarn上運行Spark
- Spark配置