近日,我荣幸地在 Spark+AI 峰会上发表了我的演讲“Redis + Structured Streaming:一种可扩展连续应用程序的完美组合”。
我前几个月对 Apache Spark 和 Redis 中引入的新功能产生了兴趣。基于我对 Apache Spark 的之前使用,我了解到它运行批处理的优雅之处,2.0 版本引入的结构化流处理是该方向的进一步发展。
同时,Redis 最近宣布了名为“Streams”的新数据结构,用于管理流数据。Redis Streams 提供生产者和消费者的异步通信,其附加功能如持久性、回顾查询和扩展选项与 Apache Kafka 类似。本质上,Redis 使用 Streams 为数据工程师提供了一个轻量、快速且易于管理的流式数据库。
此外,Spark-Redis 库被开发出来,可支持 Redis 数据结构作为弹性分布式数据集 (RDD)。现在有了结构化流处理和 Redis Streams,我们决定扩展 Spark-Redis 库来将 Redis Streams 集成作为 Apache Spark 结构化流处理的数据源。
在上个月的演讲中,我展示了如何在 Redis Streams 中收集用户活动数据并将其传输到 Apache Spark 以进行实时数据分析。我开发了一个小型、适合移动设备的 Node.js 应用,人们可以在其中点击他们最喜欢的狗狗,我用它在我的会话中举办了一场趣味比赛。这是一场激烈的比赛,现场甚至有人发挥创意,黑进了我的应用程序。他们使用“页面检查”选项更改了 HTML 按钮名称并尝试搞乱我的演示。但最终,Redis Streams、Apache Spark、Spark-Redis 库以及我的代码都足够健壮,足以有效地处理这些更改。
在演讲期间和演讲结束后,观众还提出了一些有趣的问题,例如
我从峰会中获得的主要收获是,人们对连续处理和数据流的兴趣越来越浓。由于需求较高,我们在 InfoQ 中发布了 关于此主题的更详细文章,其中提供了设置 Redis Streams 和 Apache Spark 以及使用 Spark-Redis 库连接这两个库的详尽指南。您还可以随时在此处查看我演示文稿的 完整视频。