
# Spark开源命令支持说明
本章节介绍了目前DLI对开源的Spark SQL语法的支持情况。详细的语法、参数说明，示例等信息请参考[Spark官方文档](https://spark.apache.org/docs/latest/sql-ref-syntax.html)。
表1DLI Spark开源命令支持说明 
| 功能描述              | 语法示例                                                                                                                                                                                                                                                                                                                                                                                                                                                       | DLI Spark 2.4.5 | DLI Spark 3.3.1 |
|:---|:---|:---|:---|
| 创建数据库             | CREATE DATABASE testDB;                                                                                                                                                                                                                                                                                                                                                                                                                                    | 支持              | 支持              |
| 创建DLI表            | create table if not exists testDB.testTable1( id int, age int, money double );                                                                                                                                                                                                                                                          | 支持              | 支持              |
| 创建OBS表            | create table if not exists testDB.testTable2( id int, age int, money double ) LOCATION 'obs://bucketName/filePath' partitioned by (dt string) row format delimited fields terminated by ',' STORED as TEXTFILE; | 支持              | 支持              |
| 插入测试数据            | insert into table testDB.testTable2 values (1, 18, 3.14, "20240101" ), (2, 18, 3.15, "20240102" );                                                                                                                                                                                                                                                                                             | 支持              | 支持              |
| 修改数据库属性           | ALTER DATABASE testDB SET DBPROPERTIES ('Edited-by' = 'John');                                                                                                                                                                                                                                                                                                                                                                                             | 不支持             | 不支持             |
| 修改数据库在OBS上的文件存放路径 | ALTER DATABASE testDB SET LOCATION 'obs://bucketName/filePath';                                                                                                                                                                                                                                                                                                                                                                                            | 不支持             | 不支持             |
| 修改表名              | ALTER TABLE testDB.testTable1 RENAME TO testDB.testTable101;                                                                                                                                                                                                                                                                                                                                                                                               | 支持              | 支持              |
| 修改表的分区名           | ALTER TABLE testDB.testTable2 PARTITION ( dt='20240101') RENAME TO PARTITION ( dt='20240103'); 只支持OBS表的分区名，且OBS上的文件存储路径不会变。                                                                                                                                                                                                                                                                                                  | 支持              | 支持              |
| 添加列               | ALTER TABLE testDB.testTable1 ADD COLUMNS (name string);                                                                                                                                                                                                                                                                                                                                                                                                   | 支持              | 支持              |
| 删除列               | ALTER TABLE testDB.testTable1 DROP columns (money);                                                                                                                                                                                                                                                                                                                                                                                                        | 不支持             | 不支持             |
| 修改列名称             | ALTER TABLE testDB.testTable1 RENAME COLUMN age TO years_of_age;                                                                                                                                                                                                                                                                                                                                                                                           | 不支持             | 不支持             |
| 修改列注释             | ALTER TABLE testDB.testTable1 ALTER COLUMN age COMMENT "new comment";                                                                                                                                                                                                                                                                                                                                                                                      | 不支持             | 支持              |
| 替换指定列             | ALTER TABLE testDB.testTable1 REPLACE COLUMNS (name string, ID int COMMENT 'new comment');                                                                                                                                                                                                                                                                                                                                                                 | 不支持             | 不支持             |
| 自定义表属性            | ALTER TABLE testDB.testTable1 SET TBLPROPERTIES ('aaa' = 'bbb');                                                                                                                                                                                                                                                                                                                                                                                           | 支持              | 支持              |
| 添加或修改表注释          | ALTER TABLE testDB.testTable1 SET TBLPROPERTIES ('comment' = 'test');                                                                                                                                                                                                                                                                                                                                                                                      | 支持              | 不支持             |
| 修改表的存储格式          | ALTER TABLE testDB.testTable1 SET fileformat csv;                                                                                                                                                                                                                                                                                                                                                                                                          | 不支持             | 不支持             |
| 删除表属性             | ALTER TABLE testDB.testTable1 UNSET TBLPROPERTIES ('test');                                                                                                                                                                                                                                                                                                                                                                                                | 支持              | 支持              |
| 删除表的注释            | ALTER TABLE testDB.testTable1 UNSET TBLPROPERTIES ('comment');                                                                                                                                                                                                                                                                                                                                                                                             | 支持              | 支持              |
| 展示列信息             | DESCRIBE database_name.table_name col_name; 示例：DESCRIBE testDB.testTable1 id;                                                                                                                                                                                                                                                                                                                                                | 支持              | 支持              |
| 展示列信息             | DESCRIBE table_name table_name.col_name; 示例：DESCRIBE testTable1 testTable1.id; 仅支持查看当前数据库下表的列信息。                                                                                                                                                                                                                                                                                               | 支持              | 支持              |
| 返回查询语句的元数据信息      | DESCRIBE QUERY SELECT age, sum(age) FROM testDB.testTable1 GROUP BY age;                                                                                                                                                                                                                                                                                                                                                                                   | 不支持             | 支持              |
| 返回插入数据的元数据信息      | DESCRIBE QUERY VALUES(100, 10, 10000.20D) AS testTable1(id, age, money);                                                                                                                                                                                                                                                                                                                                                                                   | 不支持             | 支持              |
| 返回表的元数据信息         | DESCRIBE QUERY TABLE testTable1;                                                                                                                                                                                                                                                                                                                                                                                                                           | 不支持             | 支持              |
| 返回表中某列的元数据信息      | DESCRIBE FROM testTable1 SELECT age;                                                                                                                                                                                                                                                                                                                                                                                                                       | 不支持             | 支持              |
| 返回表的建表语句          | SHOW CREATE TABLE testDB.testTable1 AS SERDE; Spark 3.3.1 执行该语句时，仅适用于查询Hive表的建表语句。                                                                                                                                                                                                                                                                                                                                           | 不支持             | 支持              |
| 返回表的建表语句          | SHOW CREATE TABLE testDB.testTable1;                                                                                                                                                                                                                                                                                                                                                                                                                       | 支持              | 支持              |
   
