Alias命令

Alias功能主要为了满足在不修改代码的前提下,在MapReduce自定义函数(UDF) 代码中,通过某个固定的资源名读取不同资源(数据)的需求。

命令格式如下:
alias <alias>=<real>;

行为说明如下:

为资源创建别名。

示例如下:
ADD TABLE src_part PARTITION (ds='20121208') AS res_20121208;
ADD TABLE src_part PARTITION (ds='20121209') AS res_20121209;
ALIAS resName=res_20121208;
jar -resources resName -libjars work.jar  -classpath ./work.jar com.company.MainClass args ...;  // 作业一
ALIAS resName=res_20121209;
jar -resources resName -libjars work.jar  -classpath ./work.jar com.company.MainClass args ...; // 作业二
上面的资源别名 resName在两个作业里引用到不同的资源表,代码可以不做修改也能读取到不同的数据。

Set

命令格式如下:
set <KEY>=<VALUE>

行为说明如下:

您可以使用set命令设置MaxCompute或用户自定义的系统变量影响MaxCompute的行为。

目前,MaxCompute支持的系统变量,如下所示:
--MaxCompute SQL及新版本Mapreduce支持的Set命令
set odps.sql.allow.fullscan=  --设置是否允许对分区表进行全表扫描,false不允许,true为允许。
set odps.stage.mapper.mem=    --设置每个map worker的内存大小,单位是M,默认值1024M。
set odps.stage.reducer.mem=   --设置每个reduce worker的内存大小,单位是M,默认值1024M。
set odps.stage.joiner.mem=    --设置每个join worker的内存大小,单位是M,默认值1024M。
set odps.stage.mem =    --设置MaxCompute 指定任务下所有worker的内存大小。优先级低于以上三个set key,单位M,无默认值。
set odps.stage.mapper.split.size=    -- 修改每个map worker的输入数据量,即输入文件的分片大小,从而间接控制每个map阶段下worker的数量,单位M,默认值256M。
set odps.stage.reducer.num=       --修改每个reduce阶段worker数量,无默认值。
set odps.stage.joiner.num=        --修改每个join阶段worker数量,无默认值。
set odps.stage.num=               --修改MaxCompute 指定任务的所有阶段的worker的并发度,优先级低于以上三者,无默认值。
set odps.sql.type.system.odps2=   -- 默认为false,SQL(Create、select、insert等操作)中涉及到新数据类型(TINYINT、SMALLINT、 INT、 FLOAT、VARCHAR、TIMESTAMP BINARY)时需要设置为true。

Show Flags

命令格式如下:
show flags; --显示Set设置的参数

行为说明如下:

运行Use Project命令会清除掉Set命令设置的配置。

SetProject

命令格式如下:
setproject <KEY>=<VALUE>;

行为说明如下:

  • 您可以使用setproject命令设置Project属性。
    例如,以下示例是设置允许全表扫描的方法。
    setproject odps.sql.allow.fullscan = true;
  • 当不指定<KEY>=<VALUE>时,显示当前Project的属性配置。命令格式如下:
    setproject; --显示setproject设置的参数
Project属性的详细说明如下:
属性名称 设置权限 属性描述 取值范围
odps.sql.allow.fullscan ProjectOwner 项目是否允许全表扫描 true(允许)/false(禁止)
odps.table.drop.ignorenonexistent 所有用户 当删除不存在的表时,是否报错。true时不报错 true(不报错)/false
odps.security.ip.whitelist ProjectOwner 指定访问Project的IP白名单 ip列表,逗号分隔
odps.instance.remain.days ProjectOwner Instance信息保留时间 3 ~ 30
READ_TABLE_MAX_ROW ProjectOwner Select语句返回给客户端的数据条数 1~10000
odps.sql.type.system.odps2 ProjectOwner 打开2.0新类型 true(允许)/false(禁止)
odps.sql.hive.compatible ProjectOwner 打开 hive兼容模式 true(允许)/false(禁止)
说明 打开新类型的主要影响:
  • 某些隐式类型转换会被禁用, 包括string -> bigint,  string - > datetime, double->bigint,  decimal -> double, decimal -> bigint都是有精度损失或者报错的风险。 当然依旧可以用cast来做强制转换。
  • 常量类型会变化。单独一个整形常量,如123,在旧类型下是bigint类型,在新类型下是int类型。
  • udf resolve结果可能变化,比如udf包含bigint和int两个重载。旧类型下一定走bigint的重载,而新类型下可能会被解析到int的重载。

odps.security.ip.whitelist示例

MaxCompute支持Project级别的IP白名单。
说明
  • 设置IP白名单后,只有白名单列表中的IP(console或者SDK所在的出口IP)能够访问这个Project。
  • 设置IP白名单后,您需要等待五分钟后才会生效。
  • 如果您误操作,将自己屏蔽,请通过提工单向阿里云技术支持寻求帮助。
白名单中IP列表的表示格式有三种。
  • 单纯IP:例如101.132.236.134。
  • 子网掩码:100.116.0.0/16。
  • 网段:101.132.236.134-101.132.236.144。

这三种格式可以写在同一个命令中,用逗号分割。

例如,以下为命令行工具设置IP白名单的方法:
setproject odps.security.ip.whitelist=101.132.236.134,100.116.0.0/16,101.132.236.134-101.132.236.144;
IP白名单清空后,MaxCompute就认为Project关闭了白名单功能。
setproject odps.security.ip.whitelist=;

计量预估(Cost SQL命令)

命令格式如下:
cost sql <SQL Sentence>;

行为说明如下:

预估出一条SQL的计量信息,包含输入数据的大小、UDF个数以及SQL复杂等级。
说明 该信息不能够作为实际计费标准,仅具有参考意义。
示例如下:
odps@ $odps_project >cost sql select distinct project_name, user_name from meta.m_security_users distribute by project_name sort by project_name;  
ID = 20150715113033121xxxxxxx
Input:65727592 Bytes
UDF:0
Complexity:1.0