ODPS数据迁移指南

简介: 1. 背景调研 1.1 ODPS源与目的集群 调研项 内容 ODPS源集群版本 ODPS目的集群版本 ODPS源与目的是否在一个集群/可使用相同账号 ODPS源集群AccessKeyId ODPS源集群AccessKeySecret ODPS目的集群AccessKeyId ODPS目的集群AccessKeyIdSecret 1.2 预迁移数据统计 所属Project 表名 大小 是否要迁移增量 Project1 Table1 Desc查看表大小 2. 工具选择与方案确定 目前有四种方式可用于ODPS的数据迁移。

1. 背景调研

1.1 ODPS源与目的集群

调研项 内容
ODPS源集群版本
ODPS目的集群版本
ODPS源与目的是否在一个集群/可使用相同账号
ODPS源集群AccessKeyId
ODPS源集群AccessKeySecret
ODPS目的集群AccessKeyId
ODPS目的集群AccessKeyIdSecret

1.2 预迁移数据统计

所属Project 表名 大小 是否要迁移增量
Project1 Table1 Desc查看表大小

2. 工具选择与方案确定

目前有四种方式可用于ODPS的数据迁移。

  1. 如果源与目的ODPS在一个集群,或可使用相同账号,则推荐使用ODPS COPY TASK的方式进行迁移;
  2. 如果表的数量少,可通过手动建立CDP任务的方式进行迁移;
  3. 如果表的数量多,可通过调用Base CDP API接口的方式批量建立CDP任务,但目前此API接口还不成熟,和页面有较多关联;
  4. 如果是不同集群,不同账号体系下的ODPS数据迁移,则采用使用Datax工具进行迁移,迁移所需的配置文件,可用脚本批量生成;

3. 具体实施

3.1 表(分区)结构迁移

本部分操作,可通过调用ODPS的SQL来完成。具体可编写程序,调用ODPS SDK或ODPS cmd工具来进行。
对预迁移的表,在源ODPS中获取表结构,根据表结构,在目标ODPS中批量运行组装好的建表语句,即可完成。

3.1.1 要迁移的表名梳理

  1. 根据1.2中调研结果,梳理出表名列表;
  2. 此步骤,也可使用show tables语句获取表名,然后将临时表等不需要迁移的表名去除;

3.1.2 生成DDL建表(分区)语句

此步骤操作,在ODPS源端进行,可使用ODPS CMD工具。其配置文件位于config/odps_config.ini,配置项如下:

project_name=
access_id=<accessid>
access_key=<accesskey>
end_point=http://service.odps.aliyun.com/api

这里注意,专有云环境下的end_point需要联系专有云管理人员获取。

在Bash环境下,执行如下示例语句,导出表结构。请根据实际情况改写shell语句,例如读取表名列表文件等。这里的odps_config.ini.src是源端ODPS的配置文件。

for table in tab1 tab2 tab3
do
odpscmd --config=odps_config.ini.src -e "export table $table "|awk -F ':' '{print $2}' >>tab.ddl
done

3.1.3 建立对应表(分区)

将ODPS CMD的配置文件配置成目的ODPS,然后执行如下实例语句。这里的odps_config.ini.dst是目的端ODPS的配置文件。

odpscmd --config=odps_config.ini.dst -f tab.ddl

3.2 数据迁移

3.2.1 使用ODPS TASK COPY

注意使用该工具的前提是在同一ODPS集群,或具有相同的账号。示例语句如下所示,请按照实际情况进行修改。

for table in tab1 tab2 tab3
do
odpscmd --config=odps_config.ini.dst -e "copy -d import -t proj_i.$table -url=http://src_odps_tunnel_endpoint/proj_p/$table -a" &
done

src_odps_tunnel_endpoint指源ODPS的tunnel endpoint,专有云环境下,请联系云管理人员获取。odps_config.ini.dst同上只目的端odps 的配置。
Copy命令的解释如下,有助于帮助使用和理解该命令。

copy [-a 或-o] -d [import 或 export] -url [TUNNEL 服务的 url 地址] -t [本地 ODPS 表名] -p [本地 ODPS 分区名] -e [远端 ODPS];
-a (追加模式)把数据附加到目标表已有数据之后
-o (覆盖模式)目标表已有数据被删除,新数据进入目标表
-d IMPORT或EXPORT。IMPORT表示数据从远端集群导入本地集群,EXPORT 表示数据从本地集群导入远端 集群
-url TUNNEL 服务的url地址,其中包含 Project 名,表名和分区名(如果是分区表的话)
-t 本地ODPS集群的表名
-p 本地ODPS集群的分区名,如果该表没有分区,该选项被省略
-e 远端ODPS的访问点(end point)
  • append(-a)和overwrite(-o)的语义很明确,不过tunnel其实是只支持append操作的,所以-o 命令只不过是帮你执行了一下alter table drop partition然后add partition的操作。
  • -url 指定的是tunnel地址,分区表的写法http://odps_endpoint_tunnel/prj_name/table_name/month=1,day=1,不需要写引号,多级分区用逗号分隔。
  • -t 可以写成project_name.table_name的名字
  • -p 分区名称不需要写引号,多级分区逗号分隔
  • -e 当前tunnel支持路由功能,copy task将使用-e指定的远端odps endpoint路由到对应的tunnel endpoint

以下举个例子。从源ODPS的 project_a.table_a,分区是ds='ds1'/pt=‘pt1’,导入到目的生产的project_b.table_b,分区是ds='ds2'/pt='pt2',在目的生产的ODPS CMD上运行:

copy -o -d import -url http://dt-all.ext.odps.aliyun-inc.com/project_a/table_a/ds=ds1,pt=pt1 -t project_b.table_b -p ds=ds2,pt=pt2 -e http://service-all.ext.odps.aliyun-inc.com/api;

3.2.2 使用DataX工具

本步骤利用DataX工具进行数据迁移,DataX是阿里巴巴集团内被广泛使用的离线数据同步工具。
利用datax批量配置工具来生成对应的脚本和json文件。
本步骤流程如下:

  1. 进行环境的准备,本步骤需要在迁移机上安装odpscmd与datax工具,其中datax工具和datax批量工具需要python2.6及以上的运行环境;
  2. 在datax批量工具的config.ini中进行相关配置,包括源与目的ODPS的accessID与key、odps及tunnel的endpoint、odpscmd与datax的路径等信息;
  3. 在tables.ini中填写调试用到的表列表;
  4. 运行python datax_tools.py生成对应的脚本和json配置文件;
  5. 检查脚本与json配置文件;
  6. 运行run_datax.py脚本,批量顺序执行datax任务;
  7. 运行check_datax.py脚本,进行条数的检查;

3.2.2.1 批量配置工具

批量配置工具的流程如下:

  1. 配置源与目的端的基础信息;
  2. 读取并校验源与目的端的表结构和分区信息;
  3. 根据校验结果,生成DataX所需的json文件;
  4. 生成顺序运行Datax迁移命令的脚本文件;
  5. 利用select count(*)的方式进行条数检查;

代码示例详见Datax批量工具,可自行修改优化。

3.2.2.2 DataX使用与调优

本部分详见Datax的使用文档

相关实践学习
简单用户画像分析
本场景主要介绍基于海量日志数据进行简单用户画像分析为背景,如何通过使用DataWorks完成数据采集 、加工数据、配置数据质量监控和数据可视化展现等任务。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps&nbsp;
相关文章
|
4月前
|
数据采集 DataWorks 数据安全/隐私保护
有没有方式可以实现dataworks数据迁移(从阿里云一个账号迁移到另外一个账号)?
有没有方式可以实现dataworks数据迁移(从阿里云一个账号迁移到另外一个账号)?
78 0
|
4月前
|
数据采集 DataWorks 数据安全/隐私保护
有没有方式可以实现dataworks数据迁移(从阿里云一个账号迁移到另外一个账号)?
有没有方式可以实现dataworks数据迁移(从阿里云一个账号迁移到另外一个账号)?
36 2
|
8月前
|
数据采集 DataWorks 数据挖掘
DataWorks可以支持数据迁移的功能
DataWorks可以支持数据迁移的功能
126 1
|
分布式计算 关系型数据库 分布式数据库
DRDS到ODPS数据迁移指南
数据同步节点任务是阿里云大数据平台对外提供的稳定高效、弹性伸缩的数据同步云服务。DRDS到ODPS数据迁移采用CDP的方式同步数据。 开始DRDS到ODPS数据迁移 1.     创建源和目标库表结构 初次在同步数据前需要在源库和目标库创建好相应的表结构。
6755 0
|
分布式计算 专有云 MaxCompute
ODPS到ODPS数据迁移指南
1. 工具选择与方案确定 目前,有两种方式可用于专有云环境下的从MaxCompute到MaxCompute整体数据迁移。 (1)使用DataX工具进行迁移,迁移所需的作业配置文件及运行脚本,可用DataX批量配置工具来生成; .
6915 0
|
分布式计算 运维 调度
ODPS到ADS数据迁移指南
数据同步节点任务是阿里云大数据平台对外提供的稳定高效、弹性伸缩的数据同步云服务。ODPS到数据迁移采用的方式同步数据。 1.     创建源和目标库表结构 初次在同步数据前需要在源库和目标库创建好相应的表结构。
9191 0
|
1月前
|
SQL 分布式计算 DataWorks
DataWorks常见问题之dataworks连接FTP服务器失败如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
|
1月前
|
SQL 分布式计算 DataWorks
DataWorks常见问题之dataworks自定义函数运行时报错如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
|
1月前
|
SQL DataWorks 关系型数据库
DataWorks常见问题之dataworks同步Rds任务失败如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
|
1月前
|
分布式计算 DataWorks 调度
DataWorks常见问题之dataworks运行报错 system internal error 如何解决
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。