
# 配置Structured Streaming使用RocksDB做状态存储
#### 操作场景
状态信息存储在默认的HDFS BackedStateStore，随着状态数据的增多，垃圾回收器需要处理更多的对象，从而增加了垃圾回收的时间和开销，导致JVM GC占用大量时间。可以通过配置参数spark.sql.streaming.stateStore.providerClass，选择RocksDB作为状态后端。
RocksDB是一个嵌入式的键值存储引擎，它将数据存储在本地磁盘上，支持高效的读写操作。具有可定制的内存管理和压缩算法，能根据不同的应用场景进行优化。常用于存储大量的结构化或半结构化数据，能有效处理大规模的状态数据。
#### 约束与限制
本章节仅适用于MRS 3.3.0-LTS及之后版本。
#### 配置参数
1. 安装Spark客户端。 
   详细操作请参考[安装MRS客户端](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_2127.html)。
   
   
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 |
      
   
   
 
