DLI datasourceV1表和datasourceV2表
什么是DLI datasourcev1表和DLI datasourcev2表?
- DLI datasource v1表(以下简称V1表):DLI的Datasource表格式,建表/插入/truncate命令使用DLI自定义的command,表的数据路径为$tablepath/UUID/数据文件。
图1 DLI datasource v1表
- DLI datasource v2表(以下简称V2表):spark开源的Datasource表,建表/插入/truncate命令使用spark开源的command,表的数据路径为$tablepath/数据文件。
图2 DLI datasource v2表
DLI各Spark版本对V1、V2表兼容性
表类型 |
Spark2.3 SQL队列 |
Spark2.3 通用队列 |
Spark2.4 SQL队列 |
Spark2.4 通用队列 |
Spark3.1 SQL队列 |
Spark3.1 通用队列 |
Spark3.3 SQL队列 |
Spark3.3 通用队列 |
---|---|---|---|---|---|---|---|---|
V1表 |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
部分支持 |
V2表 |
× |
× |
√ (238开始支持,237不支持) |
√ (238开始支持,237不支持) |
× |
× |
√ |
√ |
表类型 |
select |
create table |
create table like |
CTAS |
insert into |
insert overwrite |
load data |
alter table set location |
truncate table |
---|---|---|---|---|---|---|---|---|---|
V1表 |
√ |
√ |
√ |
× |
× |
× |
× |
× |
× |
V2表 |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
√ |
怎么确认当前用户创建的表是v1还是v2表?
1. 使用datasource语法建表:
CREATE TABLE IF NOT EXISTS table_name (id STRING) USING parquet;
2. 执行show create table查看TBLPROPERTIES下的"verison"字段的值
"v1"为V1表;"v2"则为V2表。
如需修改V1表为V2表请提交工单联系客户支持获取操作帮助。
升级示例
升级Spark引擎和修改数据表时,如新建队列时切换了计算资源类型可能会导致计费资源的费用变化。
- 如果原队列使用的是弹性资源池类型的计算资源,那么新建队列不涉及计算资源的费用变化。
- 如果原队列使用的是非弹性资源池的类型的计算资源,那么使用弹性资源池资源新建队列后计算资源的费用将发生变化,具体情况以计算资源的价格详情为准。
- 示例1:使用SQL队列,将Spark版本从Spark 2.4.x升级至Spark 3.3.1对数据表的版本有影响吗?
不需要,Spark 2.4.x的SQL队列支持V1表和V2表,因此升级Spark版本只需要考虑Spark版本对SQL语法的兼容性。
- 示例2:使用通用队列,将Spark版本从Spark 2.4.x升级至Spark 3.3.1对数据表的版本有影响吗?
Spark 2.4.x通用队列支持V1表和V2表,但Spark3.3.x通用队列不支持V1表。
因此如需将Spark版本从Spark 2.4.x升级至Spark 3.3.1需经过以下步骤:
- 将Spark 2.4.x的V1表修改为V2表。
- 升级Spark 2.4.x的V2表升级为Spark 3.3.1的V2表。
- 示例3:使用通用队列,怎样将Spark 2.3.2的V1表升级为Spark 3.3.1的V2表?
Spark 2.3.2通用队列不支持V2表,Spark 3.3.1通用队列不支持V1表:
- 将Spark 2.3.2的V1表升级至Spark 2.4.5的V1表。
- 将Spark 2.4.5的V1表修改为V2表。
- 升级Spark 2.4.5的V2表升级为Spark 3.3.1的V2表。
表4 DLI各Spark版本对V1、V2表兼容列表 表类型
Spark2.3 通用队列
Spark2.4 通用队列
Spark3.3 通用队列
V1表
√
√
部分支持
V2表
×
√
√