使用OmniCache物化视图执行SQL

使用OmniCache物化视图前,需要先完成OmniCache物化视图和Spark的部署。
使用OmniCache物化视图执行SQL的方式
可以通过两种方式使用OmniCache物化视图执行SQL,自动进行执行计划重写。
- 方式一:进入spark-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' \
- Spark参数可根据集群配置进行调整。
- 手动执行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上支持的语法
操作名称 |
操作语法 |
---|---|
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是否加载成功
- 使用方式一进入spark-sql客户端手动执行SQL。
- 执行枚举视图命令,不报错,说明Plugin加载成功。
SHOW MATERIALIZED VIEWS;
- 创建样例基本表和样例视图
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 );
- 创建物化视图。
CREATE MATERIALIZED VIEW IF NOT EXISTS mv_create1 AS SELECT * FROM column_type;
- 通过EXPLAIN SQL,来查看查询的执行计划是否被重写。
EXPLAIN SELECT * FROM column_type;
父主题: 使用OmniCache物化视图