ODPS SQL采用类似SQL的语法,适用于海量数据(TB级)但实时性要求不高的分布式处理场景。
背景信息
因为每个作业从前期准备到提交等阶段都需要花费较长时间,因此如果要求处理几千至数万笔事务的业务,您可以使用ODPS SQL顺利完成。ODPS SQL是主要面向吞吐量的OLAP应用。
使用限制
ODPS SQL节点的使用限制如下:
- ODPS SQL不支持单独使用set、use语句,必须和具体的SQL语句一起执行,示例如下。
set a=b; create table name(id string);
- ODPS SQL不支持关键字(set、use)语句后单独加注释,示例如下。
create table name(id string); set a=b; --注释 //ODPS SQL不支持在set语句后添加“--注释”。 create table name1(id string);
- ODPS SQL不支持在已完结的语句结尾加注释,示例如下。
说明 SQL语句后添加英文分号(;),表示语句已完结。
select * --注释 //“select *”语句未完结,因此“--注释”这个注释可以添加。 from dual;--注释 //“from dual;”语句已完结,因此“--注释”这个注释不支持添加。 show tables;
- 数据开发与调度运行的区别如下:
- 数据开发:合并当前任务代码内所有的关键字(set、use)语句,作为所有SQL的前置语句。
- 调度运行:按照顺序执行。
set a=b; create table name1(id string); set c=d; create table name2(id string);
运行结果如下表所示。执行SQL 数据开发 调度运行 第一条SQL语句 set a=b; set c=d; create table name1(id string);
set a=b; create table name1(id string);
第二条SQL语句 set a=b; set c=d; create table name2(id string);
set c=d; create table name2(id string);
- 调度参数配置必须是
key=value
的格式,且(=)前后不支持空格,示例如下。time={yyyymmdd hh:mm:ss} //错误 a =b //错误
- 如果设置bizdate、date等关键字作为调度参数变量,格式必须是yyyymmdd。如果需要其它格式,请使用其它变量名称,避免冲突,示例如下。
bizdate=201908 //错误,不支持。
- 数据开发需要查询结果,仅支持select和with起始的SQL语句,否则无结果输出。
- 执行多条SQL语句时,请用分号(;)分隔,且需要换行。
- 错误示例
create table1;create table2
- 正确示例
create table1; create table2;
- 错误示例
- MaxCompute 2.0扩展函数使用到新数据类型时,您需要在该函数的SQL语句前加
set odps.sql.type.system.odps2=true;
,并与SQL一起提交运行,以便正常使用新数据类型。 - SQL语句中添加注释时,不支持在注释中使用英文分号(;)。
错误示例:
create table1; //创建表格table1;再创建表格table2 create table2;
- 使用ODPS SQL节点进行SQL任务开发时,SQL代码大小不能超过200KB,SQL命令条数不能超过200条。