Spark Streaming官方文档翻译Spark Streaming总览
Spark Streaming官方文档翻译基本概念之初始化与Dstream
Spark Streaming官方文档翻译基本概念之输入数据流和接收器
Spark Streaming官方文档翻译基本概念之转换操作
Spark Streaming官方文档翻译基本概念之输出操作
Spark Streaming官方文档翻译基本概念之sql与Mllib
Spark Streaming官方文档基本概念之缓存与检查点
Spark Streaming官方文档翻译基本概念之累加器、广播变量和检查点
Spark Streaming官方文档翻译Spark Streaming应用之部署,升级,监控
Spark Streaming官方文档翻译Spark Streaming性能调优
Spark Streaming官方文档翻译Spark Streaming容错
Spark Streaming官方文档翻译Spark Streaming +Kafka 集成指南
Spark Streaming官方文档翻译Spark Streaming自定义接收器
基本概念
DataFrame和SQL操作(DataFrame and SQL Operations)
您可以轻松地在流数据上使用DataFrames和SQL操作。 您必须使用StreamingContext正在使用的SparkContext创建SparkSession。此外,这样做可以在驱动程序失败时重新启动。这是通过创建一个延迟实例化的SparkSession单例来实现的。如下面的例子所示。它修改了前面的字数统计示例,以使用DataFrames和SQL生成字数统计。每个RDD都被转换为一个DataFrame,注册为一个临时表,然后使用SQL进行查询。
val words: DStream[String] = ...
words.foreachRDD { rdd =>
// Get the singleton instance of SparkSession
val spark = SparkSession.builder.config(rdd.sparkContext.getConf).getOrCreate()
import spark.implicits._
// Convert RDD[String] to DataFrame
val wordsDataFrame = rdd.toDF("word")
// Create a temporary view
wordsDataFrame.createOrReplaceTempView("words")
// Do word count on DataFrame using SQL and print it
val wordCountsDataFrame =
spark.sql("select word, count(*) as total from words group by word")
wordCountsDataFrame.show()
}
查看完整的源代码。
您还可以执行SQL查询在不同线程(即与运行中的StreamingContext异步)的流数据上定义的表。必须确保您设置了StreamingContext来记住足够数量的流数据,以便查询可以运行。则,StreamingContext(它不知道任何异步SQL查询)将在查询完成之前删除旧的流数据。例如,如果您想要查询上一批数据,但是您的查询可能需要5分钟才能运行完成,那么可以调用streamingContext.remember(minutes(5))(在Scala中,或在其他语言中等效)。
参见{DataFrames和SQL](https://spark.apache.org/docs/latest/sql-programming-guide.html)指南以了解更多关于DataFrames的信息。
MLlib操作(MLlib Operations)
您还可以轻松使用MLlib提供的机器学习算法。首先,有流式机器学习算法(如流式线性回归、流式KMeans等)可以同时学习流式数据,也可以将模型应用到流式数据上。除此之外,对于更大类别的机器学习算法,您可以离线学习一个算法模型(即使用历史数据),然后在线将该模型应用于流数据。有关更多细节,请参阅MLlib指南。