表类型说明
External Table与Managed Table对比
AI DataLake Spark SQL端点支持两种表类型:External Table(外部表)和Managed Table(管理表)。
| 特性 | External Table | Managed Table |
|---|---|---|
| 数据存储位置 | OBS外部路径(通过LOCATION指定) | 平台内部存储 |
| 删除表行为 | 仅删除元数据,数据保留在OBS中 | 删除元数据和数据 |
| 建表关键字 | 不使用EXTERNAL关键字,通过指定LOCATION标识 | 不指定LOCATION |
| 数据生命周期 | 由用户管理OBS数据 | 由平台管理 |
| 适用场景 | 数据已存在于OBS、需跨服务共享数据 | 临时数据、中间结果、平台托管数据 |
| 与开源Spark差异 | 开源Spark使用CREATE EXTERNAL TABLE,平台不使用EXTERNAL关键字 | 与开源Spark一致 |
| 支持的建表语法 | DataSource语法、Hive语法 | DataSource语法、Hive语法 |
AI DataLake的External Table(OBS表)与开源Spark的External Table概念一致,但建表语法不使用EXTERNAL关键字,这是与开源的主要差异点。通过指定LOCATION 'obs://...'路径来创建外部表。
CREATE TABLE默认存储引擎变更
Spark 3.x中,CREATE TABLE不指定USING子句时默认使用Hive存储格式。
Spark 4.0中,默认存储格式由spark.sql.sources.default配置决定,通常为parquet。
| 场景 | Spark 3.x | Spark 4.0 |
|---|---|---|
| CREATE TABLE t (id INT) | 默认Hive格式 | 默认parquet格式 |
| CREATE TABLE t (id INT) USING hive | Hive格式 | Hive格式(显式指定) |
| CREATE TABLE t (id INT) USING parquet | parquet格式 | parquet格式(显式指定) |
- 使用建议:
- 所有建表语句明确指定存储格式,避免依赖默认值。未指定USING的建表语句需确认预期格式
- AI DataLake建议所有建表语句显式指定USING子句
- AI DataLake的Managed Table推荐使用USING parquet或USING orc
- 依赖Hive格式特性的表需显式指定USING hive
- 推荐写法:显式指定格式
-- 创建Managed Table,使用parquet格式 CREATE TABLE t1 (id INT, name STRING) USING parquet; -- 创建Managed Table,使用hive格式 CREATE TABLE t2 (id INT, name STRING) USING hive; -- 创建OBS表,使用parquet格式 CREATE TABLE t3 (id INT, name STRING) USING parquet LOCATION 'obs://bucket/path';