Structured Streaming Programming Guide

概述

结构化流是一种基于Spark SQL引擎的可扩展且容错的流处理引擎。他可以像表达静态数据的批处理计算一样表达流式计算。

快速示例

监听本地netcat服务器的输入内容 实时计算每个单词出现的次数在屏幕上打印
可以通过运行下载的Spark目录下的程序直接启动 再另外启动一个netcat服务器 再服务器终端输入内容即可在控制台看见相应的输出

编程模型

结构化流中的关键思想是将实时数据流视为连续追加的表。这使得新的流处理模型非常类似于批处理模型。您将流式计算表示为静态表上的标准批处理查询,Spark将其作为无界输入表上的增量查询运行。

基本概念

将输入数据流视为“输入表”。到达流的每个数据项都像一个新行被附加到输入表。
模型对输入的查询将生成“结果表”。每个触发间隔(例如,每1秒),新行将附加到输入表,最终更新结果表。每当结果表更新时,我们都希望将更改的结果行写入外部接收器。
流程图Structured Streaming不会存储整个表,他只是从数据源逐渐取得数据,处理以更新结果,然后丢弃源数据。

使用数据集和数据资源的API

创建流式DataFrames和流式Datasets
输入源

有一些内置源。

  • 文件来源。目录中写入的文件作为数据源
  • Kafka来源。从Kafka读取源数据
  • 套接字来源
  • 速率源
流式 DataFrames/Datasets的操作
基本操作-查询 投影 聚合
case class DeviceData(device: String, deviceType: String, signal: Double, time: DateTime)

val df: DataFrame = ... // streaming DataFrame with IOT device data with schema { device: string, deviceType: string, signal: double, time: string }
val ds: Dataset[DeviceData] = df.as[DeviceData]    // streaming Dataset with IOT device data

// Select the devices which have signal more than 10
df.select("device").where("signal > 10")      // usin
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值