---
title: 推荐视图
description: "用户可根据实际需要提供数据表，使用OmniMV物化视图最终得到推荐的视图集。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/2400/bds/kunpengbds_omniruntime_20_0416.html
sourcePath: /source/zh/kunpengboostkithistory/2400/bds/kunpengbds_omniruntime_20_0416.html
indexId: a98f4b7484fa23bd49d3fee65ee7e52dda13f52a56a65af86bbbc348f389cc1078
---
# 推荐视图

用户可根据实际需要提供数据表，使用OmniMV物化视图最终得到推荐的视图集。

本次任务示例使用TPC-DS的数据表作为测试表。

1. 修改配置文件。

  a. 打开“config/omnimv_config_spark.cfg”文件。
    1 2 cd /opt/omnimv/BoostKit-omnimv_1.1.0 vi config/omnimv_config_spark.cfg

  b. 按“i”进入编辑模式，参考如下内容修改。
    1 2 3 4 5 database = tpcds_bin_partitioned_decimal_orc_8000 logparser_jar_path = /opt/omnimv/boostkit-omnimv-logparser-spark-3.1.1-1.1.0-aarch64.jar cache_plugin_jar_path = /opt/omnimv/boostkit-omnimv-spark-3.1.1-1.1.0-aarch64.jar hdfs_input_path = hdfs://server1:9000/spark2-history sqls_path = hdfs://server1:9000/omnimv/tpcds

  c. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。

**表1 OmniMV物化视图部分配置**

| 配置项 | 含义 | 参考值 |
| --- | --- | --- |
| database | 用于测试的数据库名称。 | \- |
| logparser\_jar\_path | 日志解析JAR包路径。 | /opt/omnimv/boostkit\-omnimv\-logparser\-spark\-3.1.1\-1.1.0\-aarch64.jar |
| cache\_plugin\_jar\_path | OmniMV的JAR包路径。 | /opt/omnimv/boostkit\-omnimv\-spark\-3.1.1\-1.1.0\-aarch64.jar |
| hdfs\_input\_path | Spark任务运行日志在HDFS上的访问地址。 | hdfs://server1:9000/spark2\-history |
| sqls\_path | 测试SQL在HDFS上的访问地址。 | hdfs://server1:9000/omnimv/tpcds |


2. 获取测试SQL（以Tpcds为例）。

  a. 下载    Spark源码(https://github.com/apache/spark)
并解压，在“spark-master/sql/core/src/test/resources/tpcds/”路径下获取TPC-DS测试SQL。
  b. 将测试SQL传到HDFS上（路径为配置文件中sqls_path的值）。

```
hdfs dfs -mkdir -p hdfs://server1:9000/omnimv/tpcds
hdfs dfs -put
/spark源码目录/sql/core/src/test/resources/tpcds/*
hdfs://server1:9000/omnimv/tpcds/
```


3. 初始化数据库。这一步主要是获取目标表的建表信息，用于后续创建推荐视图。
  屏幕打印“init_database succeed!”说明执行成功。

  1 python main.pyc spark init_database

4. 运行测试SQL（以TPC-DS测试SQL为例）。
  屏幕打印“run_original_sqls succeed!”说明执行成功。

  1 python main.pyc spark run_original_sqls

5. 解析运行日志。

  a. 通过http://ip:18080地址访问Spark History Server查看原生SQL任务起止时间。
  b. 打开配置文件“config/omnimv_config_spark.cfg”。
    1 vi config/omnimv_config_spark.cfg

  c. 按“i”进入编辑模式，修改参数如下。
    1 2 3 4 # 测试SQL运行开始时间 q_log_start_time = 2022-09-15 11:58 # 测试SQL运行结束时间 q_log_end_time = 2022-09-15 17:15

  d. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
  e. 运行日志解析脚本。
    屏幕打印“parse_query_logs succeed!”说明执行成功。

    1 python main.pyc spark parse_query_logs

6. 生成候选视图。

  a. 可选：打开配置文件“config/omnimv_config_spark.cfg”。
    1 vi config/omnimv_config_spark.cfg

  b. 可选：按“i”进入编辑模式，修改参数如下。
    1 2 # 候选TOP mv的数量限制，实际推荐数量小于等于该值 mv_limit = 10

  c. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
  d. 运行脚本。
    屏幕打印“greedy recommend for candidate mv”说明执行成功。 1 python main.pyc spark generate_views

7. 运行创建topN视图
  需要人为确认，是否可以真实的创建这个候选的视图。 1 python main.pyc spark create_greedy_views

8. 解析重写任务日志。

  a. 通过http://ip:18080地址访问Spark History Server查看重写任务起止时间。
  b. 打开配置文件“config/omnimv_config_spark.cfg”。
    1 vi config/omnimv_config_spark.cfg

  c. 按“i”进入编辑模式，修改参数如下。
    1 2 3 4 # 创建视图任务开始时间 mv_log_start_time = 2022-09-15 20:18 # 创建视图任务结束时间 mv_log_end_time = 2022-09-15 21:17

  d. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
  e. 运行脚本。
    1 python main.pyc spark parse_mv_logs

9. 训练代价评估模型。
  代价评估模型训练完成后，可以通过命令hdfs dfs -ls /omnimv/training查看是否生成模型。

  1 python main.pyc spark cost_estimation

10. 获取推荐的物化视图。
  1 python main.pyc spark recommend

11. 创建推荐的物化视图。
  需要人为确认，是否可以真实创建推荐的视图。 1 python main.pyc spark create_recommend_views
