实时流计算:Structured Streaming
发布网友
发布时间:2024-10-05 22:35
我来回答
共1个回答
热心网友
时间:2024-10-26 02:34
实时流计算:Structured Streaming
背景
Structured Streaming是Spark2.0版本提出的新实时流框架,相比Spark Streaming,其优点包括支持多种数据源输入和输出、基于Event-Time的实时处理、支持DataFrame处理、解决Spark Streaming的代码升级、DAG图变化引起的任务失败问题、提供低延迟连续处理方式以及与静态数据批处理计算相同方式表达流计算等。
Structured Streaming的特性与优势
1. 支持多种数据源输入与输出,如Kafka、flume、Socket、Json等。
2. 以Event-Time为基础,提供更精确的实时处理,更适合业务场景。
3. 支持DataFrame处理,与Spark SQL集成,提供可扩展和容错的流式数据处理引擎。
4. 解决Spark Streaming存在的代码升级、DAG图变化引起任务失败以及无法断点续传的问题。
5. 提供基于微批处理的低延迟连续处理方式,以及1毫秒端到端延迟至少一次保证的连续处理。
Structured Streaming的源与输出
源包括File Source、Kafka Source、Socket Source等,输出模式有Append、Complete、Update三种。
Structured Streaming支持的Sink包括FileSink、KafkaSink、ConsoleSink、MemorySink和ForeachSink,其中ForeachSink最为常用。
测试与环境
测试环境包括JDK、Spark、Hadoop、Maven、Kafka、Scala等,测试代码包括Socket、Kafka数据源的处理与输出。
问题与解决方案
在使用Structured Streaming连接Kafka时,可能出现找不到Spark连接Kafka的包的问题,解决方法为添加依赖或手动引入Kafka包,指定kafka-clients.jar路径。
常见项目案例
在APP上线活动时,实时更新商品详情页面的热度,通过Structured Streaming读取Kafka日志,采用Complete模式统计历史输出,实现APP页面点击、Nginx服务器、Kafka、Structured Streaming、MySQL的数据流处理。
具体代码实现展示了从Kafka消费数据至MySQL输出的流程。