推荐视图

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

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

  1. 修改配置文件。

    1. 打开“config/omnimv_config_spark.cfg”文件。
      1
      2
      cd /opt/omnimv/BoostKit-omnimv_1.1.0
      vi config/omnimv_config_spark.cfg
      
    2. “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
      
    3. “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为例)。

    1. 下载Spark源码并解压,在“spark-master/sql/core/src/test/resources/tpcds/”路径下获取TPC-DS测试SQL。
    2. 将测试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. 解析运行日志。

    1. 通过http://ip:18080地址访问Spark History Server查看原生SQL任务起止时间。
    2. 打开配置文件“config/omnimv_config_spark.cfg”
      1
      vi config/omnimv_config_spark.cfg
      
    3. “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
      
    4. “Esc”键,输入:wq!,按“Enter”保存并退出编辑。
    5. 运行日志解析脚本。

      屏幕打印“parse_query_logs succeed!”说明执行成功。

      1
      python main.pyc spark parse_query_logs
      

  6. 生成候选视图。

    1. 可选:打开配置文件“config/omnimv_config_spark.cfg”
      1
      vi config/omnimv_config_spark.cfg
      
    2. 可选:“i”进入编辑模式,修改参数如下。
      1
      2
      # 候选TOP mv的数量限制,实际推荐数量小于等于该值
      mv_limit = 10
      
    3. “Esc”键,输入:wq!,按“Enter”保存并退出编辑。
    4. 运行脚本。
      屏幕打印“greedy recommend for candidate mv”说明执行成功。
      1
      python main.pyc spark generate_views
      

  7. 运行创建topN视图

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

  8. 解析重写任务日志。

    1. 通过http://ip:18080地址访问Spark History Server查看重写任务起止时间。
    2. 打开配置文件“config/omnimv_config_spark.cfg”
      1
      vi config/omnimv_config_spark.cfg
      
    3. “i”进入编辑模式,修改参数如下。
      1
      2
      3
      4
      # 创建视图任务开始时间
      mv_log_start_time = 2022-09-15 20:18
      # 创建视图任务结束时间
      mv_log_end_time = 2022-09-15 21:17
      
    4. “Esc”键,输入:wq!,按“Enter”保存并退出编辑。
    5. 运行脚本。
      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