使用 MaxCompute(原ODPS) java sdk 运行安全相关命令
2017-03-22 00:00
453 查看
使用 MaxCompute console 的同学,可能都使用过 odps 安全相关的命令。官方文档上有详细的 odps 安全指南,并给出了安全相关命令列表。
简而言之,权限管理、项目空间安全配置以及用户及授权管理都属于 odps 安全命令相关的范畴。
再直白一点,以下列关键字开头的命令,都是 odps 安全相关操作命令:
那么,这些能在 odps console 上运行的命令,该如何使用 odps sdk 运行呢?它们是与 sql 一样通过创建 instance 的方式来运行吗?
不可以,这些命令不是 sql , 不可以通过 sql task 来运行。
需要使用接口
下面通过一个例子来演示如何通过 odps java sdk 来设置表
运行结果:
![](http://ata2-img.cn-hangzhou.img-pub.aliyun-inc.com/066f62c329e0309fc40dbdfa3698dad4)
程序运行完成后,在 odps console 中运行 `desc test_lable;` 命令,可以看到 set label 已经生效了。
![](http://ata2-img.cn-hangzhou.img-pub.aliyun-inc.com/3634132b518285aedaea37cf486ff92e)
其他安全相关的命令,都可以这样子通过 odps sdk 来运行呢,快来试试吧!
欢迎加入MaxCompute钉钉群讨论
简而言之,权限管理、项目空间安全配置以及用户及授权管理都属于 odps 安全命令相关的范畴。
再直白一点,以下列关键字开头的命令,都是 odps 安全相关操作命令:
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 ...
那么,这些能在 odps console 上运行的命令,该如何使用 odps sdk 运行呢?它们是与 sql 一样通过创建 instance 的方式来运行吗?
不可以,这些命令不是 sql , 不可以通过 sql task 来运行。
需要使用接口
SecurityManager.runQuery()来运行。详细 javadoc 戳这里
SecurityManager类在 odps-sdk-core 中,因此在使用时请添加依赖:
<dependency> <groupId>com.aliyun.odps</groupId> <artifactId>odps-sdk-core</artifactId> <version>0.23.3-public</version> </dependency>
下面通过一个例子来演示如何通过 odps java sdk 来设置表
test_label列的访问级别为 2,也就是运行命令
SET LABEL 2 TO TABLE test_label(key, value);。
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>"); // create test table // if u already have a table, skip this TableSchema schema = new TableSchema(); schema.addColumn(new Column("key", OdpsType.STRING)); schema.addColumn(new Column("value", OdpsType.BIGINT)); odps.tables().create("test_label", schema); // 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(); } } }
运行结果:
程序运行完成后,在 odps console 中运行 `desc test_lable;` 命令,可以看到 set label 已经生效了。
其他安全相关的命令,都可以这样子通过 odps sdk 来运行呢,快来试试吧!
欢迎加入MaxCompute钉钉群讨论
![](https://yqfile.alicdn.com/42559c7dde62e4d333c90e02efdf416257a4be27.jpeg)
相关文章推荐
- 使用 MaxCompute(原ODPS) java sdk 运行安全相关命令
- 使用 MaxCompute(原ODPS) java sdk 运行安全相关命令
- 使用 MaxCompute(原ODPS) java sdk 运行安全相关命令
- 使用 MaxCompute(原ODPS) java sdk 运行安全相关命令
- 使用 MaxCompute(原ODPS) java sdk 运行安全相关命令
- 使用 MaxCompute(原ODPS) java sdk 运行安全相关命令
- 解决打开Android SDK Manager时出现“.....\sdk\tools\lib\\find_java.exe不是内部或外部命令,也不是可运行的程序或批处理文件“问题
- 使用java命令运行带有目录的class文件
- 查看java程序内存使用情况相关命令
- Java学习-使用javac,java命令运行程序
- CentOS 使用yum命令安装Java SDK(openjdk)
- CentOS 使用yum命令安装Java SDK(openjdk)
- 在命令提示符下编译、运行java 以及使用jar命令制作可执行的jar包
- 使用java命令运行scala代码
- CentOS7 使用yum命令安装Java SDK(openjdk)
- 使用命令窗口运行java程序
- 您的安全设置已阻止应用程序使用已过期的Java版本运行
- Tomcat启动时一闪而过,但是jdk环境变量配置正确,并使用java或者javac命令多可以运行,但是tomcat不能运行解决办法。
- 使用java命令运行class文件带包名时出错
- dos中与java编译运行相关的常用命令整理