---
title: OmniCache物化视图配置文件
description: "运行前，需要相应的修改“BoostKit-omnicache_1.0.0/config/omnicache_config.cfg”，其中配置文件样例如下所示："
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/2200/bds/kunpengomnicache_20_0022.html
sourcePath: /source/zh/kunpengboostkithistory/2200/bds/kunpengomnicache_20_0022.html
indexId: 380c3833a33675bc13f0e466e77b1e2d8fac5b9d89f3ab9b46e1d3c313548afa72
---
# OmniCache物化视图配置文件

运行前，需要相应的修改“BoostKit-omnicache_1.0.0/config/omnicache_config.cfg”，其中配置文件样例如下所示：

```
[schema]
# schema sql路径
schema_path = hdfs://server1:9000/omnicache_0919/schema.sql
[raw_file]
# 数据库名称
database = tpcds_bin_partitioned_decimal_orc_8000
# spark yarn模式下，指定query执行的时间段
q_log_start_time = 2022-09-16 20:28
q_log_end_time = 2022-09-17 08:50
# spark yarn模式下，成功改写的query使用omnicache plugin执行的时间段
q_mv_log_start_time = 2022-09-17 16:37
q_mv_log_end_time = 2022-09-17 19:20
# 日志解析的JAR包路径
logparser_jar_path = /opt/onmnicache/boostkit-omnicache-logparser-spark-3.1.1-1.0.0-aarch64.jar
# omnicache plugin的路径
cache_plugin_jar_path = /opt/omnicache/boostkit-omnicache-spark-3.1.1-1.0.0-aarch64.jar
# spark-defaults.conf路径下面配置的spark history输出的路径
hdfs_input_path = hdfs://server1:9000/spark2-history
# 通过日志解析之后，把每条日志解析成json格式，所有日志存放的路径
hdfs_output_path = hdfs://server1:9000/omnicache_0919/spark2-history-json
# sql语句的存放路径，这里以tpcds sql为例
sqls_path = hdfs://server1:9000/omnicache_0919/tpcds
[csv]
# 以下三个均为recommend task的中间结果文件，即使用成本评估模型的结果
query_csv = hdfs://server1:9000/omnicache_0919/data/query_data.csv
mv_csv = hdfs://server1:9000/omnicache_0919/data/mv_data.csv
q_mv_csv = hdfs://server1:9000/omnicache_0919/data/query_mv_data.csv
# 候选视图存放的路径，同时会在改目录下面生成子目录：mv_sql(所有候选视图)，top_mv（top N 候选视图），mv_recommend（最后推荐的视图）
mv_output_path = hdfs://server1:9000/omnicache_0919/mv
# topN q-mv的对应关系
q_mv_mapping_csv = hdfs://server1:9000/omnicache_0919/data/query-mv_mapping.csv
# recommend task的输出结果文件，包含了推荐的mv的编号和cost，根据编号可在上述${mv_output_path}/mv_sql中找到原始mv sql
recommend_mv_csv = hdfs://server1:9000/omnicache_0919/data/recommend-mvdata.csv
[train]
# 训练数据的比例，不建议调整
train_rate = 0.8
# 训练batch大小，根据TOPN的N值大小进行调整，batch size取为2的整数次幂，取N/batch_size = 10左右，但是batch_size一般不超过256
batch_size = 8
# 训练轮数，根据N值大小进行调整，经验下在30~100之间调整，N=20时，epoch取30即可，N值较大时，适当加大epoch的值
epoch = 20
# 学习率，不建议调整
learning_rate = 0.005
# 以下均为深度学习网络参数，不建议调整
weight_decay = 1e-5
keyword_embedding_size = 32
char_embedding_size = 32
node_auxiliary_size = 2
first_hidden_size = 32
second_hidden_size = 32
drop_rate = 0.1
# 成本评估模型保存路径，切换数据库平台重新训练时请删除此文件
model_save_path_q = hdfs://server1:9000/omnicache_0919/training/ckpt_q.pt
model_save_path_q_mv = hdfs://server1:9000/omnicache_0919/training/ckpt_q_mv.pt
# 模型训练中输出数据的存放路径
training_data_output_path = hdfs://server1:9000/omnicache_0919/training
[rl]
# 推荐模型训练时batch大小
batch_size_rl = 2
# 推荐模型训练时学习率
learning_rate_rl = 0.01
# 以下均为强化学习参数，不建议调整
epsilon = 0.9
gamma = 0.9
target_replace_iter = 3
memory_capacity = 10
drop_rate_rl = 0.2
[spark]
# Spark执行的模式，yarn模式还是local模式
spark_master = yarn
# Spark参数中--name后面的参数
app_name = omnicache
# Spark参数中--num-executors指定的参数
spark_num_executors = 30
# Spark参数中--executor-memory指定的参数
spark_executor_memory = 32g
# Spark参数中--driver-memory指定的参数
spark_driver_memory = 48g
# Spark参数中--executor-cores指定的参数
executor_cores = 18
# 执行spark-sql session的超时时间，默认单位是s，这里默认指定5000s超时时间
session_timeout = 5000
[mv_limit]
# 候选TOP mv的数量限制
cnt_limit = 40
space_limit = 1024
#引用计数小于refer_threshold的子树，不拿来当候选视图，缺省值为2
refer_threshold=2
[mv_selection]
query_ratio = 0.6
space_ratio = 0.35
filter_ratio = 0.05
```

hdfs://server1:9000这个代表数据会缓存在HDFS上面，其中server1代表当前服务器的Hostname，9000端口代表HDFS部署的端口号，因此需要根据环境信息进行适配，当然可以采用简化的方式，例如：

将sqls_path = hdfs://server1:9000/omnicache_0919/tpcds。可以直接修改为sqls_path = /omnicache_0919/tpcds。

配置文件中，除了2个JAR包的地址，其余地址默认是HDFS的路径地址。


**表1 OmniCache物化视图配置文件**

| 名称 | 作用 | 缺省值 |
| --- | --- | --- |
| schema\_path | 表结构存储路径。 | \- |
| database | 训练用的数据库名。 | \- |
| q\_log\_start\_time | 原生SQL查询开始运行时间。 | \- |
| q\_log\_end\_time | 原生SQL查询结束运行时间。 | \- |
| q\_mv\_log\_start\_time | 使用物化视图改写SQL的开始运行时间。 | \- |
| q\_mv\_log\_end\_time | 使用物化视图改写SQL的结束运行时间。 | \- |
| logparser\_jar\_path | 日志解析JAR包存放路径。 | \- |
| cache\_plugin\_jar\_path | OmniCache物化视图插件JAR包存放路径。 | \- |
| hdfs\_input\_path | Spark历史日志存放路径。 | \- |
| hdfs\_output\_path | OmniCache物化视图解析日志的存放路径。 | \- |
| sqls\_path | 待训练的SQL集合。 | \- |
| query\_csv | 查询数据存放路径。 | \- |
| mv\_csv | 视图数据存放路径。 | \- |
| q\_mv\_csv | 查询\-视图关系存放路径。 | \- |
| mv\_output\_path | 候选视图输出路径。 | \- |
| q\_mv\_mapping\_csv | 查询\-视图关系存放路径。 | \- |
| recommend\_mv\_csv | 推荐视图输出路径。 | \- |
| train\_rate | 训练数据比例，不建议调整。 | 0.8 |
| batch\_size | 训练batch大小，根据TOPN的N值大小进行调整，batch size取为2的整数次幂，取N/batch\_size = 10左右，但是batch\_size一般不超过256。 | 8 |
| epoch | 训练轮数，根据N值大小进行调整，经验下在30~100之间调整，N=20时，epoch取30即可，N值较大时，适当加大epoch的值。 | 20 |
| learning\_rate | 学习率，不建议调整。 | 0.005 |
| weight\_decay | 深度学习网络参数，不建议调整。 | 1e\-5 |
| keyword\_embedding\_size | 深度学习网络参数，不建议调整。 | 32 |
| char\_embedding\_size | 深度学习网络参数，不建议调整。 | 32 |
| node\_auxiliary\_size | 深度学习网络参数，不建议调整。 | 2 |
| first\_hidden\_size | 深度学习网络参数，不建议调整。 | 32 |
| second\_hidden\_size | 深度学习网络参数，不建议调整。 | 32 |
| drop\_rate | 深度学习网络参数，不建议调整。 | 0.1 |
| model\_save\_path\_q | 成本评估模型保存路径，切换数据库平台重新训练时请删除此文件。 | \- |
| model\_save\_path\_q\_mv | 成本评估模型保存路径，切换数据库平台重新训练时请删除此文件。 | \- |
| training\_data\_output\_path | 模型训练中输出数据的存放路径。 | \- |
| batch\_size\_rl | 推荐模型训练时batch大小。 | 2 |
| learning\_rate\_rl | 推荐模型训练时学习率。 | 0.01 |
| epsilon | 强化学习参数，不建议调整。 | 0.9 |
| gamma | 强化学习参数，不建议调整。 | 0.9 |
| target\_replace\_iter | 强化学习参数，不建议调整。 | 3 |
| memory\_capacity | 强化学习参数，不建议调整。 | 10 |
| drop\_rate\_rl | 强化学习参数，不建议调整。 | 0.2 |
| spark\_master | Spark执行的模式。 | yarn |
| app\_name | Spark任务名称。 | \- |
| spark\_num\_executors | Spark参数 \-\-num\-executors。 | 30 |
| spark\_executor\_memory | Spark参数 \-\-executor\-memory。 | 32g |
| spark\_driver\_memory | Spark参数 \-\-driver\-memory。 | 48g |
| executor\_cores | Spark参数 \-\-executor\-cores。 | 18 |
| session\_timeout | spark\-sql session的超时时间，默认单位是s。 | 5000 |
| cnt\_limit | 候选视图的数量限制，默认选择40个候选视图，可以适当调大一些，确保覆盖sql数量增大。 | 40 |
| refer\_threshold | 引用计数小于refer\_threshold的子树，不拿来当候选视图，缺省值为2，不建议调整。 | 2 |
