最近,我很荣幸能在 Spark+AI 峰会上发表题为“Redis + Structured Streaming:扩展持续应用的完美组合”的演讲。
我对这个主题的兴趣源于过去几个月 Apache Spark 和 Redis 中引入的新功能。基于我之前使用 Apache Spark 的经验,我很欣赏它优雅地运行批处理的方式,而 2.0 版本中引入的 Structured Streaming 进一步推动了这一方向的发展。
与此同时,Redis 最近宣布了一种新的数据结构,称为“Streams”,用于管理流数据。Redis Streams 提供了生产者和消费者之间的异步通信,并具有持久性、回溯查询和扩展选项等附加功能——类似于 Apache Kafka。本质上,通过 Streams,Redis 提供了一个轻量级、快速、易于管理的流数据库,对数据工程师很有益。
此外,还开发了 Spark-Redis 库,用于支持 Redis 数据结构作为弹性分布式数据集(RDD)。现在,随着 Structured Streaming 和 Redis Streams 的可用,我们决定扩展 Spark-Redis 库,将 Redis Streams 集成到 Apache Spark Structured Streaming 中作为数据源。
在我上个月的演讲中,我演示了如何在 Redis Streams 中收集用户活动数据,并将其作为 Apache Spark 的接收器进行实时数据分析。我开发了一个小型的、移动友好的 Node.js 应用,人们可以在其中点击他们最喜欢的狗,我用它在我的演讲中进行了一个有趣的比赛。竞争很激烈,观众中有几位甚至通过破解我的应用展现了创造力。他们使用“页面检查”选项更改了 HTML 按钮的名称,试图扰乱我的演示。但最终,Redis Streams、Apache Spark、Spark-Redis 库和我的代码都足够健壮,能够有效处理这些变化。
听众在我的演讲中和演讲后也提出了一些有趣的问题,例如
我在峰会上的主要收获是,人们对持续处理和数据流的兴趣日益增长。由于这一需求,我们在 InfoQ 上发表了一篇更详细的文章,提供了如何设置 Redis Streams 和 Apache Spark 以及使用 Spark-Redis 库连接两者的详细方法。或者,您也可以在此处查看我演讲的完整视频。