在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
Spark Streaming简介Spark Streaming是Spark核心API的扩展,可实现实时数据流的可扩展,高吞吐量,容错流式处理。数据可以从诸如Kafka,Flume,Kinesis或TCP套接字的许多来源中获取,并且可以使用由高级函数(如 在内部,它的工作原理如下图所示。 Spark Streaming接收实时输入数据流,并将数据分成批,然后由Spark引擎对其进行处理,以批量生成最终的结果流。 Spark Streaming提供称为离散流或DStream的高级抽象,它表示连续的数据流。可以从诸如Kafka,Flume和Kinesis等来源的输入数据流中创建DStream,或者通过对其他DStream应用高级操作来创建。在内部,DStream表示为一系列RDD。 本指南介绍如何开始使用DStreams编写Spark Streaming程序。您可以在Scala,Java或Python中编写Spark Streaming程序(在Spark 1.2中引入),所有这些都在本指南中有示例介绍,不同语言有对应的代码段。本文仅列出Scala版,其他版本参见:Java&Python Spark Streaming示例 注意:有一些API在Python中是不同的或不可用的。 Spark Streaming示例, Scala版首先,我们将Spark Streaming类的名称和StreamingContext的一些隐式转换导入到我们的环境中,以便为我们需要的其他类(如DStream)添加有用的方法。 StreamingContext是所有流功能的主要入口点。我们创建一个带有两个执行线程的本地StreamingContext,并且间隔为1秒。
使用此上下文,我们可以创建一个DStream,它表示来自TCP源的流数据,指定为主机名(例如localhost)和端口(例如9999)。
这行DStream表示将从数据服务器接收的数据流。此DStream中的每个记录都是一行文本。接下来,我们要将空格字符的行分割成单词。
flatMap是一个一对多的DStream操作,通过从源DStream中的每个记录生成多个新记录来创建新的DStream。在这种情况下,每一行将被分割成多个单词,并将单词流表示为单词DStream。接下来,我们统计单词数量。
请注意,当执行这些行时,Spark Streaming仅设置启动时执行的计算,并且尚未开始实际处理。要在完成所有转换设置之后开始处理,我们要调用
完整的代码可以在Spark Streaming示例NetworkWordCount中找到。 如果您已经下载并构建了Spark,则可以运行此示例,如下所示。您将首先需要运行Netcat(大多数类Unix系统中的一个小型实用程序)作为数据服务器
然后,在不同的终端中,您可以通过下面的命令启动示例
然后,在运行netcat服务器的终端中输入的任何行将每秒计数并打印在屏幕上。它看起来是这面这个样子:
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13