本文为您介绍如何在MaxCompute Studio上使用Java SDK接口运行安全相关的命令。
背景信息
您可以使用如下两种方式运行安全相关命令:
-
通过MaxCompute客户端运行,使用说明请参见安全参数列表。
以下关键字开头的命令为MaxCompute安全相关的操作命令。
GRANT/REVOKE ... SHOW GRANTS/ACL/PACKAGE/LABEL/ROLE/PRINCIPALS SHOW PRIV/PRIVILEGES LIST/ADD/REOVE USERS/ROLES/TRUSTEDPROJECTS DROP/CREATE ROLE CLEAR EXPIRED GRANTS DESC/DESCRIBE ROLE/PACKAGE CREATE/DELETE/DROP PACKAGE ADD ... TO PACKAGE REMOVE ... FROM PACKAGE ALLOW/DISALLOW PROJECT INSTALL/UNINSTALL PACKAGE LIST/ADD/REMOVE ACCOUNTPROVIDERS SET LABLE ... -
使用Java SDK接口
SecurityManager.runQuery()方式运行,方法说明请参见MaxCompute SDK Java Doc。说明MaxCompute安全相关的命令不是SQL命令,不能通过SQLTask方式来运行。
前提条件
您需要完成以下操作:
-
安装IntelliJ IDEA开发工具。具体操作,请参见安装IntelliJ IDEA。
-
安装MaxCompute Studio并连接MaxCompute项目。具体操作,请参见安装MaxCompute Studio和创建MaxCompute项目连接。
-
创建MaxCompute Java Module,并在pom.xml中添加项目依赖。
SecurityManager类在odps-sdk-core包中,因此在使用时需要添加如下配置。
<dependency> <groupId>com.aliyun.odps</groupId> <artifactId>odps-sdk-core</artifactId> <version>0.29.11-oversea-public</version> </dependency>您可以在search.maven.org搜索odps-sdk-core获取最新版本的SDK。
操作步骤
-
创建测试表test_label。
CREATE TABLE IF NOT EXISTS test_label( key STRING, value BIGINT ); -
在MaxCompute Java Module中创建类并进行Java代码开发。
import com.aliyun.odps.Column; import com.aliyun.odps.Odps; import com.aliyun.odps.OdpsException; import com.aliyun.odps.OdpsType; import com.aliyun.odps.TableSchema; import com.aliyun.odps.account.Account; import com.aliyun.odps.account.AliyunAccount; import com.aliyun.odps.security.SecurityManager; public class test { public static void main(String [] args) throws OdpsException { try { // init odps Account account = new AliyunAccount("<your_accessid>", "<your_accesskey>"); Odps odps = new Odps(account); odps.setEndpoint("http://service-corp.odps.aliyun-inc.com/api"); odps.setDefaultProject("<your_project>"); // set label 2 to table columns SecurityManager securityManager = odps.projects().get().getSecurityManager(); String res = securityManager.runQuery("SET LABEL 2 TO TABLE test_label(key, value);", false); System.out.println(res); } catch (OdpsException e) { e.printStackTrace(); } } } -
运行上述代码,并在控制台查看运行结果。
"D:\Program Files\Java\jdk1.8.0_181\bin\java.exe" ... OK Process finished with exit code 0 -
结果验证。
程序运行完成后,在MaxCompute客户端中运行
desc test_label命令,可以看到set label命令已经生效。------+ ! Native Columns: ! +------+ ! Field ! Type ! Label ! Comment ! +------+ ! key ! string ! 2 ! ! ! value ! bigint ! 2 ! ! +------+说明更多安全命令请参考MaxCompute权限、Label权限控制、安全参数列表以及基于Package跨项目访问资源。
该文章对您有帮助吗?