更新时间:2025-06-10 GMT+08:00

配置Structured Streaming使用RocksDB做状态存储

操作场景

状态信息存储在默认的HDFS BackedStateStore,随着状态数据的增多,垃圾回收器需要处理更多的对象,从而增加了垃圾回收的时间和开销,导致JVM GC占用大量时间。可以通过配置参数spark.sql.streaming.stateStore.providerClass,选择RocksDB作为状态后端。

RocksDB是一个嵌入式的键值存储引擎,它将数据存储在本地磁盘上,支持高效的读写操作。具有可定制的内存管理和压缩算法,能根据不同的应用场景进行优化。常用于存储大量的结构化或半结构化数据,能有效处理大规模的状态数据。

约束与限制

本章节仅适用于MRS 3.3.0-LTS及之后版本。

配置参数

  1. 安装Spark客户端。

    详细操作请参考安装MRS客户端

  2. 使用客户端安装用户登录Spark客户端节点。

    在Spark客户端的“{客户端安装目录}/Spark/spark/conf/spark-defaults.conf”配置文件中进行设置。

    参数

    说明

    取值示例

    spark.sql.streaming.stateStore.providerClass

    用于管理有状态流查询中的状态数据的类。此类必须是StateStoreProvider的子类,并且必须具有零参数构造函数。

    配置参数值为org.apache.spark.sql.execution.streaming.state.RocksDBStateStoreProvider即可选择RocksDB作为状态后端。

    org.apache.spark.sql.execution.streaming.state.RocksDBStateStoreProvider