目前Maxompute一共支持3个数据类型版本:
1、MaxCompute 2.0数据类型
2、MaxCompute 1.0数据类型
3、MaxCompute Hive兼容模式(即部分数据类型和SQL行为兼容Hive)
MaxCompute 2.0推出了兼容开源主流产品的2.0数据类型和Hive兼容数据类型两个数据类型版本。加上原有的1.0数据类型版本,目前Maxompute一共支持3个数据类型版本。
MaxCompute数据类型版本 - MaxCompute设置数据类型版本属性的参数共有3个: - odps.sql.type.system.odps2:MaxCompute 2.0数据类型版本的开关,属性值为True或False。 odps.sql.decimal.odps2:MaxCompute 2.0的Decimal数据类型的开关,属性值为True或False。 - odps.sql.hive.compatible:MaxCompute Hive兼容模式(即部分数据类型和SQL行为兼容Hive)数据类型版本的开关,属性值为True或False。
在新增项目时MaxCompute可以对3个版本的数据类型进行选择,各个版本默认设置如下:
1.0数据类型版本
setproject odps.sql.type.system.odps2=false; --关闭MaxCompute 2.0数据类型。
setproject odps.sql.decimal.odps2=false; --关闭Decimal 2.0数据类型。
setproject odps.sql.hive.compatible=false; --关闭Hive兼容模式。
适用于早期使用的MaxCompute项目,且该项目依赖的产品组件不支持2.0数据类型版本。
2.0数据类型版本
setproject odps.sql.type.system.odps2=true; --打开MaxCompute 2.0数据类型。
setproject odps.sql.decimal.odps2=true; --打开Decimal 2.0数据类型。
setproject odps.sql.hive.compatible=false; --关闭Hive兼容模式。
适用于在2020年04月之前无存量数据的MaxCompute项目,且该项目依赖的产品组件支持2.0数据类型版本。
Hive兼容数据类型
setproject odps.sql.type.system.odps2=true; --打开MaxCompute 2.0数据类型。
setproject odps.sql.decimal.odps2=true; --打开Decimal 2.0数据类型。
setproject odps.sql.hive.compatible=true; --打开Hive兼容模式。
适用于从Hadoop迁移的MaxCompute项目,且该项目依赖的产品组件支持2.0数据类型版本。
选择数据类型版本
项目选择的数据类型版本影响范围如下:
表的数据类型。
DML语句、内置函数的行为。
与MaxCompute密切相关的开发组件。
因此,在选择项目的数据类型版本前建议您了解各种版本的说明以及差异点
查看项目的数据类型版本
执行如下命令查看已经创建项目的属性。
setproject;
查看odps.sql.type.system.odps2、odps.sql.decimal.odps2、odps.sql.hive.compatible属性判断当前项目的数据类型版本 。
如果发现项目当前选择的数据类型版本不能满足业务需求,可以修改数据类型版本。
执行如下命令修改项目的数据类型版本。此命令需要项目管理员(Project Owner)或超级管理员角色(Super_Administrator Role)执行。
--查看项目数据类型版本。
setproject;
--开启/关闭MaxCompute2.0数据类型版本。
setproject odps.sql.type.system.odps2=true/false;
--开启/关闭decimal2.0数据类型。
setproject odps.sql.decimal.odps2=true/false;
--开启/关闭hive兼容模式数据类型版本。
setproject odps.sql.hive.compatible=true/false;
修改建议如下:
项目当前使用2.0数据类型版本,如果发现必须使用的组件不支持2.0数据类型。您可以使用如下方式解决与不支持2.0数据类型组件的对接问题:
将项目修改为1.0数据类型版本。
在与不支持2.0数据类型组件对接任务时,将Session设置为1.0数据类型版本。
说明 将如下语句与Session中的命令一起提交,即可将该Session设置为1.0数据类型版本。该命令仅支持小写。
set odps.sql.type.system.odps2=false;
项目使用2.0数据类型版本,部分SQL必须使用1.0数据类型,但是部分功能依赖2.0数据类型(例如current_timestamp函数)。解决方法如下:
将SQL拆分为单独的Session,将Session设置为1.0数据类型版本。
将SQL改写为可以替代的功能。
如果项目最开始使用了2.0数据类型版本,后面变更成1.0数据类型版本。需要注意以下2点:
对于已经使用了2.0数据类型的表,读取数据时,TINYINT、SMALLINT、INT转为BIGINT类型,CHAR、VARCHAR转为STRING类型。
建立1.0数据类型的表,将2.0数据类型的表中数据通过CAST函数导入1.0数据类型的表,即可将2.0数据类型的数据转化为1.0数据类型。
欢迎扫码加入 MaxCompute开发者社区钉钉群,或点击申请加入。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
MaxCompute(原ODPS)是一项面向分析的大数据计算服务,它以Serverless架构提供快速、全托管的在线数据仓库服务,消除传统数据平台在资源扩展性和弹性方面的限制,最小化用户运维投入,使您经济并高效的分析处理海量数据。