更新时间:2026-07-03 GMT+08:00
分享

表类型说明

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。

表1 行为变更对比

场景

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';

相关文档