|
|
|
@ -5,7 +5,9 @@ Spark Streaming 是一套优秀的实时计算框架。其良好的可扩展性
|
|
|
|
|
|
|
|
|
|
Spark Streaming 有高扩展性、高吞吐量和容错能力强的特点。Spark Streaming 支持的数据输入源很多,例如:Kafka、Flume、Twitter、ZeroMQ 和简单的 TCP 套接字等等。数据输入后可以用 Spark 的高度抽象原语如:map、reduce、join、window 等进行运算。而结果也能保存在很多地方,如 HDFS,数据库等。另外 Spark Streaming 也能和 MLlib(机器学习)以及 Graphx 完美融合。其架构见下图:
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
<p align="center" >
|
|
|
|
|
<img style="border: 2px solid #ddd;padding: 5px; background: #fff;" src="https://www.educoder.net/api/attachments/462367" alt="" height="100%" width="100%" />
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
Spark Streaming 其优秀的特点给我们带来很多的应用场景。本文中,将通过从kafka获取用户行为来为大家进行介绍。场景流程如下:
|
|
|
|
|
- 读取 Kafka 实时数据;
|
|
|
|
@ -20,14 +22,19 @@ Spark Streaming 其优秀的特点给我们带来很多的应用场景。本文
|
|
|
|
|
|
|
|
|
|
结构化流(Structed streaming)中的关键思想是将实时数据流视为连续追加的表
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
<p align="center" >
|
|
|
|
|
<img style="border: 2px solid #ddd;padding: 5px; background: #fff;" src="https://www.educoder.net/api/attachments/375945" alt="" height="100%" width="100%" />
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
程序模型:
|
|
|
|
|
|
|
|
|
|
每个触发(Triggers)间隔(例如,每`1`秒)将新行附加到输入表,经查询产生结果表,并最终写入外部Sink。
|
|
|
|
|
|
|
|
|
|

|
|
|
|
|
<p align="center" >
|
|
|
|
|
<img style="border: 2px solid #ddd;padding: 5px; background: #fff;" src="https://www.educoder.net/api/attachments/375947" alt="" height="100%" width="100%" />
|
|
|
|
|
</p>
|
|
|
|
|
|
|
|
|
|
### 3.1.4 创建流式Dataframe的说明
|
|
|
|
|
`Spark2.0`以后,`DataFrames`和`Datasets`不仅可以用于`sparksql`中表示静态有界的数据,而且可以在`Structer streaming`中表示流式无界数据。我们可以通过`SparkSession.readStream()`创建流式`DataFrames`;
|
|
|
|
|