Spark Streaming:读取和写入状态信息到外部数据库,如 cassandra
Posted
技术标签:
【中文标题】Spark Streaming:读取和写入状态信息到外部数据库,如 cassandra【英文标题】:Spark Streaming : Reading and writing state info to external database like cassandra 【发布时间】:2016-06-09 15:45:25 【问题描述】:火花流:
当 Spark Streaming 应用程序发生代码更改时,我必须清理检查点以部署新更改。实际上,我正在失去历史状态,这真的很糟糕。
除了常规的检查点之外,spark 默认提供了一种方法,我们可以从 Cassandra 等外部数据库中保存和重建状态信息吗?
能否请您指出一些这方面的编码示例。
【问题讨论】:
我需要维护 Spark 流状态,以便在该上下文中处理传入事件。因此,我们无法避免检查点。我的问题是如何定期将 Spark 流状态 RDD(不是 OUTPUT 数据)保存到外部数据存储中,让我们说每 12 小时一次? 【参考方案1】:如果您使用像 Kafka 直接 API 这样的无接收器方法,那么您可以获取主题读取的偏移量并将其存储到 Cassandra(或任何数据库)。在您的初始化中,您必须从 Cassandra 读取偏移量并在直接 API 中使用它。通过这种方式,您可以避免检查点并轻松升级您的 jar。
要访问 dstream 中的偏移量,可以在此处查看示例 offset reading example
【讨论】:
我需要维护 Spark 流状态,以便在该上下文中处理传入事件。因此,我们无法避免检查点。我的问题是如何定期将 Spark 流状态 RDD(不是 OUTPUT 数据)保存到外部数据存储中,让我们说每 12 小时一次?以上是关于Spark Streaming:读取和写入状态信息到外部数据库,如 cassandra的主要内容,如果未能解决你的问题,请参考以下文章
Spark Streaming - 从Kafka读取json并将json写入其他Kafka主题
使用 Spark Structured Streaming 从多个 Kafka 主题读取并写入不同接收器的最佳方式是啥?
如何使用Spark Streaming读取HBase的数据并写入到HDFS
混合 Spark Structured Streaming API 和 DStream 写入 Kafka