开发者社区 问答 正文

maxcompute 建表失败

您好我在使用主账号登录的情况下,一直建表失败。

使用方式:通过datagrip使用jdbc的方式建表。

异常: [2021-09-10 18:37:48] 'oss://oss-cn-beijing-internal.aliyuncs.com/aliyun-bj-tpcds/tpcds/item';] instance:[20210910103748545g157yxqw2] failed: ODPS-0130071:[1,1] Semantic analysis exception - external table checking failure, error message: java.lang.RuntimeException: {"RequestId":"501B5106-0AF0-53FB-9048-5D2166747375","HostId":"sts.aliyuncs.com","Code":"EntityNotExist.Role","Message":"The role not exists: acs:ram::1862881404947410:role/aliyunodpsdefaultrole. ","Recommend":"https://error-center.aliyun.com/status/search?Keyword=EntityNotExist.Role&source=PopGw"}

展开
收起
kevin1886 2021-09-10 18:52:16 796 分享 版权
阿里云 AI 助理回答

您好,根据您提供的错误信息,问题出在尝试创建外部表时涉及到的RAM角色aliyunodpsdefaultrole不存在。这导致了权限验证失败,从而无法成功建表。为了解决这个问题,请按照以下步骤操作:

  1. 检查RAM角色

    • 首先,登录到阿里云控制台,进入RAM管理页面。
    • 确认是否存在名为aliyunodpsdefaultrole的角色。如果不存在,需要创建这个角色。
  2. 创建缺失的RAM角色

    • 如果角色确实不存在,点击“创建角色”,并为其命名aliyunodpsdefaultrole
    • 在角色权限设置中,确保该角色拥有访问MaxCompute(原ODPS)服务以及OSS(如果外部表数据存储在OSS上的话)所需的权限。通常,这包括但不限于AliyunODPSFullAccessAliyunOSSFullAccess策略,或者更细粒度的自定义策略以满足最小权限原则。
  3. 赋予主账号或相关子账号该角色

    • 创建或编辑用户/子账号,将新创建的aliyunodpsdefaultrole角色赋予给需要使用此角色访问MaxCompute的主账号或其他子账号。
  4. 刷新权限

    • 角色更新后,可能需要一段时间权限才能生效。一般情况下,系统会自动刷新,但有时手动操作可以更快解决问题。可以通过重新登录DataWorks、Datagrip等工具来帮助刷新权限。
  5. 再次尝试建表

    • 完成上述步骤后,重新通过DataGrip使用JDBC方式尝试创建表,此时应该能够成功执行。

如果问题依然存在,建议检查DataGrip中的连接配置,确保使用的RAM账号正确无误,并且确认MaxCompute项目空间的设置是否允许当前角色进行表的创建操作。此外,也可以考虑查看MaxCompute项目的ACL设置,确保没有其他访问控制限制阻止操作。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答