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