OmniCache物化视图配置文件
运行前,需要相应的修改“BoostKit-omnicache_1.0.0/config/omnicache_config.cfg”,其中配置文件样例如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 | [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的路径地址。
名称 |
作用 |
缺省值 |
---|---|---|
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 |