举个栗子:专有云MaxCompute创建TableStore外部表

1、 案例背景

某客户专有云v3环境现场,TableStore(OTS)数据迁移,需要进行数据校验工作,由于迁移工具并未有校验的api接口或者独有的校验工具,所以考虑使用在MaxCompute的上边创建OTS的外部表的方式来进行验证;

2、创建外部表访问的方式

方式1:
MaxCompute计算服务要访问TableStore数据需要有一个安全的授权通道。MaxCompute可以通过阿里云的访问控制服务(RAM)和令牌服务(STS)来实现对数据的安全访问;
执行方式:
RAM控制台,创建角色AliyunODPSDefaultRole,并将策略内容设置为如下:

{
  "Statement": [
    {
      "Action": "sts:AssumeRole",
      "Effect": "Allow",
      "Principal": {
        "Service": [
          "odps.aliyuncs.com"
        ]
      }
    }
  ],
  "Version": "1"
}

然后编辑该角色的授权策略,将权限AliyunODPSRolePolicy授权给该角色。
方式2:
通过LOCATION参数设置用户的ak,sk的方式来进行访问;
执行方式如下配置:

LOCATION 'tablestore://<*your AK id*>:<*your AK secret key*>@odps-ots-dev.cn-hangzhou.ots.aliyuncs.com';

3、专有云测试案例

PS:本案例采用了最开始的一种方案,也是错误的一种方式并参考了公共云的文档进行的配置导致出现问题报错现象的发生;
如下为错误操作过程:
专有云控制台--ram管理当中创建AliyunODPSDefaultRole角色并设置将权限AliyunODPSRolePolicy授权给该角色
如下图所示:
ram

然后在dataworks数据开发平台进行OTS外部表的创建操作报错;
但是执行报错没有权限进行外部表的创建操作;
所以考虑使用ak,sk的方式进行创建测试,但是依然报错缺少using参数;
errortable
ps:图片内的原因,文章后边会给出解释;
error_
参考的是公共云的创建操作步骤:
image
参考链接:https://help.aliyun.com/document_detail/54519.html?spm=a2c4g.11174283.6.717.1549590ehPHFc6
但是如果在操作命令后加上using ""参数,也可以创建成功;
但是查询会报如下 failed 2的无脑报错:
cdpfail2
fail2


检查fronted和odpsworker的docker中的相关log日志没有有效的报错信息出现;
这个时候,就需要考虑了.......................................
建表语句没有问题,ram role权限没有问题,ak,sk也没有问题;
但是创建就出现了两个问题:
1、使用ram role权限配置odps.properties.rolearn参数建表报错无权限?
2、在location中设置ak,sk方式建表也报错,缺少using?


由于添加using ""参数以后建表成功产生的误导,导致后续一直在排查为什么会报错fail 2的错误发生;
其实应该追本溯源,最应该考虑的是是否公共云和专有云在创建OTS外部表的创建语句是否有什么不同之处?
所以查看对应版本专有云关于MaxCompute创建OTS外部表的创建语句命令如下:
image
恍然大悟!!!
然后按照专有云文档的描述,重新进行了语句的创建操作如下:
righttable


建表成功,问题解决!

总结:

1、对于公共云和专有云一定要区分清楚,可以参考,但不能完全模仿使用;
2、对于实现方式一定要提前确认好,比如sts的ram role访问还是ak,sk的访问;

参考链接:
https://yq.aliyun.com/articles/69314?spm=a2c4g.11186623.2.29.47d0249cKkv8Ut

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在UI设计中,我们可以用一个简单的例子来说明布局的概念。比如说,你有一个Android项目,你想创建一个屏幕,这个屏幕上有两个主要部分:标题栏(Title Bar)和内容区域(Content Area)。你可以使用`ConstraintLayout`或者`LinearLayout`作为基础布局。 ```xml <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:id="@+id/titleImage" android:src="@drawable/title_icon" app:layout_constraintTop_toTopOf="parent" app:layout_constraintStart_toStartOf="parent" android:width="wrap_content" android:height="wrap_content" /> <TextView android:id="@+id/titleText" android:text="Hello, World!" android:layout_marginTop="dp(16)" // dp用于像素单位 android:textSize="20sp" app:layout_constraintTop_toBottomOf="@id/titleImage" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" /> <View android:id="@+id/contentSeparator" android:background="@color/divider_color" android:layout_width="match_parent" android:layout_height="1dp" app:layout_constraintTop_toBottomOf="@id/titleText" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" /> <ScrollView android:id="@+id/contentArea" android:layout_marginTop="dp(16)" app:layout_constraintTop_toBottomOf="@id/contentSeparator" app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHeight_default="wrap"> <!-- 这里可以放内容视图 --> </ScrollView> </androidx.constraintlayout.widget.ConstraintLayout> ``` 在这个例子中,无论实际显示的是图片、文本还是其他内容,`contentArea`都会占据剩余的空间。这就是通过布局管理器实现的多态性,它可以根据组件的需求动态调整布局。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值