
# Hudi SQL使用约束
Hudi支持使用Spark SQL操作Hudi的DDL（数据定义语言）和DML（数据操作语言）语法，这使得所有用户（非工程师、分析师等）都能更轻松地访问和操作 Hudi。通过这种集成，用户可以利用熟悉的 SQL 语法来执行各种数据管理和操作任务，而无需深入了解复杂的底层技术细节。
典型使用场景包括：通过Spark SQL创建Hudi表并写入数据（数据入湖场景）、通过SQL对Hudi表执行增量更新和删除（数据变更场景）、通过SQL查询Hudi表数据进行分析（数据分析场景）。在使用上述场景操作前，需了解本文档列出的各项使用约束。
#### 约束与限制
- 支持在Hudi客户端执行Spark SQL操作Hudi。
- 支持在Spark2x的JDBCServer中执行Spark SQL操作Hudi。
- 不支持在Spark2x的客户端执行Spark SQL操作Hudi，支持在Spark3.1.1及之后版本的客户端执行Spark SQL操作Hudi。
- 不支持在Hive、Hetu引擎中写Hudi表，以及修改Hudi表结构，仅支持读。
- 由于SQL的KeyGenerator默认是org.apache.hudi.keygen.ComplexKeyGenerator，要求DataSource方式写入时KeyGenerator与SQL设置的一致。
- 对于MOR表的修改操作只允许在主表操作，ro和rt后缀的表仅供查询使用。
- 在查询语句中字段名和别名不能相同。
 
#### 相关文档
- [Hudi DDL语法说明](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_24263.html)：了解Hudi支持的完整DDL语法，包括CREATE TABLE、ALTER TABLE、DROP TABLE等语句的参数说明和示例。
- [Hudi DML语法说明](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_24272.html)：了解Hudi支持的完整DML语法，包括INSERT、UPDATE、DELETE、MERGE INTO等语句的参数说明和示例。
- [Hudi表概述](https://support.huaweicloud.com/cmpntguide-lts-mrs/mrs_01_24103.html)：了解COW（Copy on Write）和MOR（Merge on Read）两种表类型的原理、适用场景和性能差异，辅助选择合适的表类型。
 
