中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
鲲鹏小智

使用Spark引擎执行SQL

为用户提供了两种使用OmniMV物化视图 Spark引擎执行SQL的方式,均可用于重写SQL的物理执行计划。

前提条件

请参见安装OmniMV物化视图特性完成OmniMV物化视图安装,并参见《Spark 部署指南》完成Spark的部署。

使用OmniMV物化视图执行SQL的方式

可以通过两种方式使用OmniMV物化视图 Spark引擎执行SQL,均可自动进行执行计划重写。

  • 方式一:进入spark-sql客户端手动执行SQL。
    1. 进入客户端。
       1
       2
       3
       4
       5
       6
       7
       8
       9
      10
      11
      12
      spark-sql \
      --deploy-mode client \
      --driver-cores 5 \
      --driver-memory 5g \
      --num-executors 18 \
      --executor-cores 21 \
      --executor-memory 55g \
      --master yarn \
      --database 数据库名称 \
      --name 任务名称 \
      --jars /opt/omnimv/boostkit-omnimv-spark-3.1.1-1.1.0-aarch64.jar \
      --conf 'spark.sql.extensions=com.huawei.boostkit.spark.OmniMV' \
      
    2. Spark参数可根据集群配置进行调整。
    3. 手动执行SQL。
  • 方式二: 使用脚本批量执行SQL
    例如:
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    spark-sql \
    --deploy-mode client \
    --driver-cores 5 \
    --driver-memory 5g \
    --num-executors 18 \
    --executor-cores 21 \
    --executor-memory 55g \
    --master yarn \
    --database 数据库名称 \
    --name 任务名称 \
    --jars /opt/omnimv/boostkit-omnimv-spark-3.1.1-1.1.0-aarch64.jar \
    --conf 'spark.sql.extensions=com.huawei.boostkit.spark.OmniMV' \
    -f sql文件的实际路径
    

    Spark参数可根据集群配置进行调整。主要是通过-f调用写好的SQL文件,用户仿照此例自定义脚本,批量执行SQL。

OmniMV物化视图 Spark引擎支持的语法

表1 OmniMV物化视图 Spark引擎支持的语法

操作名称

操作语法

Create MV(创建视图)

CREATE MATERIALIZED VIEW [IF NOT EXISTS] [db_name.]mv_name

[DISABLE REWRITE]

[COMMENT 'mv_comment']

[PARTITIONED BY (col_name, ...)]

AS

<query>;

Drop MV(删除视图)

DROP MATERIALIZED VIEW [IF EXISTS] [db_name.]mv_name;

Show MVS(枚举视图)

SHOW MATERIALIZED VIEWS [ON [db_name.]mv_name];

Alter MV rewrite(更新视图配置,是否参与重写)

ALTER MATERIALIZED VIEW [db_name.]mv_name ENABLE|DISABLE REWRITE;

Refresh MV (更新视图数据)

REFRESH MATERIALIZED VIEW [db_name.]mv_name;

WASH OUT MATERIALIZED VIEW(淘汰视图)

--ALL:淘汰所有视图

--UNUSED_DAYS策略(默认):淘汰${UNUSED_DAYS}未使用过的视图

--RESERVE_QUANTITY_BY_VIEW_COUNT策略:保留使用次数前${RESERVE_QUANTITY_BY_VIEW_COUNT}的视图

--DROP_QUANTITY_BY_SPACE_CONSUMED策略:淘汰占用空间前${DROP_QUANTITY_BY_SPACE_CONSUMED}的视图

WASH OUT [ALL] MATERIALIZED VIEW [

USING

[UNUSED_DAYS,]

[RESERVE_QUANTITY_BY_VIEW_COUNT,]

[DROP_QUANTITY_BY_SPACE_CONSUMED]

]

查看OmniMV物化视图 Spark引擎是否加载成功

  1. 使用方式一进入spark-sql客户端手动执行SQL。
  2. 执行枚举视图命令,不报错,说明Plugin加载成功。
    1
    SHOW MATERIALIZED VIEWS;
    

  3. 创建样例基本表和样例视图。
     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
    CREATE TABLE IF NOT EXISTS column_type(
        empid INT,
        deptno INT,
        locationid INT,
        booleantype BOOLEAN,
        bytetype BYTE,
        shorttype SHORT,
        integertype INT,
        longtype LONG,
        floattype FLOAT,
        doubletype DOUBLE,
        datetype DATE,
        timestamptype TIMESTAMP,
        stringtype STRING,
        decimaltype DECIMAL
    );
    INSERT INTO TABLE column_type VALUES(
        1,1,1,TRUE,1,1,1,1,1.0,1.0,
        DATE '2022-01-01',
        TIMESTAMP '2022-01-01',
        'stringtype1',1.0
    );
    INSERT INTO TABLE column_type VALUES(
        2,2,2,TRUE,2,2,2,2,2.0,2.0,
        DATE '2022-02-02',
        TIMESTAMP '2022-02-02',
        'stringtype2',2.0
    );
    

  4. 创建物化视图。
    1
    2
    3
    CREATE MATERIALIZED VIEW IF NOT EXISTS mv_create1
    AS
    SELECT * FROM column_type;
    

  5. 通过EXPLAIN SQL,来查看查询的执行计划是否被重写。
    1
    2
    EXPLAIN 
    SELECT * FROM column_type;
    

搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词