---
title: 使用OmniCache物化视图执行SQL
description: "使用OmniCache物化视图前，需要先完成OmniCache物化视图和Spark的部署。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengboostkithistory/2200/bds/kunpengomnicache_20_0020.html
sourcePath: /source/zh/kunpengboostkithistory/2200/bds/kunpengomnicache_20_0020.html
indexId: 8344dc4ddc3eb9e174a10fab3ebbcb41c7eefa49a923669ca02262449cb118fa72
---
# 使用OmniCache物化视图执行SQL

使用OmniCache物化视图前，需要先完成OmniCache物化视图和Spark的部署。


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

可以通过两种方式使用OmniCache物化视图执行SQL，自动进行执行计划重写。

- 方式一：进入spark-sql客户端手动执行SQL。

  1. 进入客户端。

```
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/omnicache/boostkit-omnicache-spark-3.1.1-1.0.0-aarch64.jar \
--conf 'spark.sql.extensions=com.huawei.boostkit.spark.OmniCache' \
```


  2. Spark参数可根据集群配置进行调整。
  3. 手动执行SQL。
- 方式二: 使用脚本批量执行SQL。
  例如：

```
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/omnicache/boostkit-omnicache-spark-3.1.1-1.0.0-aarch64.jar \
--conf 'spark.sql.extensions=com.huawei.boostkit.spark.OmniCache' \
-f sql文件的实际路径
```


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


#### OmniCache物化视图在Spark上支持的语法


**表1 OmniCache物化视图在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; |


#### 查看OmniCache物化视图 Plguin是否加载成功

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

```
SHOW MATERIALIZED VIEWS;
```


3. 创建样例基本表和样例视图

```
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. 创建物化视图。

```
CREATE MATERIALIZED VIEW IF NOT EXISTS mv_create1
AS
SELECT * FROM column_type;
```


5. 通过EXPLAIN SQL，来查看查询的执行计划是否被重写。

```
EXPLAIN
SELECT * FROM column_type;
```
