本文向您介绍进入项目空间、设置空间属性(权限和白名单功能等)的命令操作。

进入项目空间

命令格式如下:
use <project_name>;
行为说明如下:
  • 进入指定的项目空间。进入该空间后可以直接操作该项目空间下的所有对象。
  • 项目空间不存在或当前用户不在此项目空间中,则异常返回。
示例如下:
odps @ my_project>use my_project;   --my_project是用户有权限访问的一个project
说明

以上示例在客户端中运行。所有的MaxCompute命令关键字、项目空间名、表名、列名大小写不敏感。

创建项目空间即创建MaxCompute项目。

成功运行命令后,您即可直接访问该项目空间下的对象。假设my_project项目空间下有表test_src,您运行如下命令:
odps @ my_project>select * from test_src;
MaxCompute便会自动搜索项目空间my_project下的表。如果存在此表,返回表中的数据,如果此表不存在,则报异常退出。如果您在my_project下想要访问另一项目空间my_project2下的表test_src,则需要指定项目空间名,如下所示:
odps @ my_project>select * from my_project2.test_src;

此时返回my_project2项目空间下的数据结果,而不是my_project下的test_src表数据。

MaxCompute没有提供创建及删除项目空间的命令。您可以通过管理控制台对各自的项目空间完成更多的配置及操作,详情请参见项目空间列表

查询项目空间

命令格式:
list projects;
用途:用于供主账号查看其创建的项目列表。
说明 该命令从odpscmd 0.30.2版本开始支持。

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(不报错)/false(报错)
odps.table.lifecycle ProjectOwner
  • optional:创建表时,lifecycle子句为可选设置,如果用户不设置生命周期,则该表永久有效。
  • mandatory:lifecycle子句为必选设置,用户必须设置生命周期。
  • inherit:如果用户不设置生命周期,则该表的生命周期为odps.table.lifecycle.value的值。
optional/mandatory/inherit
odps.table.lifecycle.value ProjectOwner 默认的生命周期值 1~37231(默认)
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兼容模式后,MaxCompute才可以支持Hive指定的各种语法,如inputRecordReader, outputRecordReader, Serde等。 true(允许)/false(禁止)
说明 打开新类型的主要影响:
  • 某些隐式类型转换会被禁用, 包括STRING->BIGINT、STRING->DATETIME、 DOUBLE->BIGNIT、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白名单后,您需要等待五分钟后才会生效。
  • VPC环境下当前仅支持针对SLB整段地址进行放通。
  • 如果您误操作,将自己屏蔽,请通过提工单向阿里云技术支持寻求帮助。
白名单中IP列表的表示形式有以下三种,目前已支持IPV6格式。
  • 单纯IP:例如101.132.236.134、FE80:0202:B3FF:FE1E:8329。
  • 子网掩码:例如100.116.0.0/16、FE80:0101:4567:F456:0202:B3FF:1111:1111/126。
  • 网段:例如101.132.236.134-101.132.236.144、FE80:0101:4567:F456:0202:B3FF:FE1E:8330-FE80:0101:4567:F456:0202:B3FF:FE1E:8331。

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

使用命令行工具设置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=;