精华内容
下载资源
问答
  • 摘要: 乍一看标题会以为是不是作者错了怎么会有从MaxCompute到MaxCompute迁移数据的场景呢在实际使用中已经有客户遇到了这种场景比如两个网络互通的专有云环境之间数据迁移、公共云数加DataIDE上两个云账号之间...
        

    摘要: 乍一看标题会以为是不是作者写错了怎么会有从MaxCompute到MaxCompute迁移数据的场景呢在实际使用中已经有客户遇到了这种场景比如两个网络互通的专有云环境之间数据迁移、公共云数加DataIDE上两个云账号之间数据迁移、还有网络不通的两个MaxCompute项目数据迁移等等下面我们逐个场景介绍。

    免费开通大数据服务:https://www.aliyun.com/produc...

    乍一看标题会以为是不是作者写错了,怎么会有从MaxCompute到MaxCompute迁移数据的场景呢?在实际使用中已经有客户遇到了这种场景,比如:两个网络互通的专有云环境之间数据迁移、公共云数加DataIDE上两个云账号之间数据迁移、还有网络不通的两个MaxCompute项目数据迁移等等,下面我们逐个场景介绍。

    场景一:两个网络互通的专有云MaxCompute环境之间数据迁移

    这种场景需要先从源MaxCompute中导出元数据DDL,在目标MaxCompute中初始化表,然后借助DataX工具完成数据迁移,步骤如下:

    1.安装配置ODPS客户端
    https://help.aliyun.com/docum...

    2.安装配置Datax客户端

    下载DataX工具包,下载后解压至本地某个目录,修改权限为755,进入bin目录,即可运行样例同步作业:

    $ tar zxvf datax.tar.gz 
    $ sudo chmod -R 755 {YOUR_DATAX_HOME} 
    $ cd  {YOUR_DATAX_HOME}/bin 
    $ python datax.py ../job/job.json

    3.表结构迁移

    3.1 从ODPS中导出某个表的建表语句,可用来测试数据同步。

    export table table_name;
    DDL:create table IF NOT EXISTS ` date_timestame ` (`id` datetime comment "") partitioned by(pt string comment "");
    alter table ` date_timestame ` add IF NOT EXISTS partition(dt='20161001');
    alter table ` date_timestame ` add IF NOT EXISTS partition(dt='20161101');
    alter table ` date_timestame ` add IF NOT EXISTS partition(dt='20161201');
    alter table ` date_timestame ` add IF NOT EXISTS partition(dt='20170101');

    3.2 从ODPS批量导出建表语句。

    export <projectname> <local_path>;

    3.3 将建表语句在目标ODPS的project下执行,即可完成表结构创建。

    4.数据迁移

    从源ODPS读取数据写入到目标ODPS,先按照“表结构迁移”在目标ODPS创建一个表,做DataX数据同步验证。

    4.1 、创建作业的配置文件(json格式)

    可以通过命令查看配置模板: python datax.py -r {YOUR_READER} -w {YOUR_WRITER}

    odps2odps.json样例(填写相关参数,odpsServer/ tunnelServer要改成源/目标ODPS配置):

    {
        "job": {
            "setting": {
                "speed": {
                    "channel": 1
                }
            },
            "content": [
                {
                    "reader": {
                        "name": "odpsreader",
                        "parameter": {
                            "accessId": "${srcAccessId}",
                            "accessKey": "${srcAccessKey}",
                            "project": "${srcProject}",
                            "table": "${srcTable}",
                            "partition": ["pt=${srcPartition}"],
                            "column": [
                                "*"
                            ],
                            "odpsServer": "http://service.odpsstg.aliyun-inc.com/stgnew",
                            "tunnelServer": "http://tunnel.odpsstg.aliyun-inc.com"
                        }
                    },
                    "writer": {
                        "name": "odpswriter",
                        "parameter": {
                            "accessId": "${dstAccessId}",
                            "accessKey": "${dstAccessKey}",
                            "project": "${dstProject}",
                            "table": "${dstTable}",
                            "partition": "pt",
                            "column": [
                                "*"
                            ],
                            "odpsServer": "http://service.odpsstg.aliyun-inc.com/stgnew",
                            "tunnelServer": "http://tunnel.odpsstg.aliyun-inc.com"
                        }
                    }
                }
            ]
        }
    }

    4.2 启动DataX

    $ cd {YOUR_DATAX_DIR_BIN} $ python datax.py ./odps2odps.json

    同步结束,显示日志如下:

    4.3 、批量迁移

    根据导出的表结构批量生成DataX同步脚本,我会协助完成。

    场景二:公共云数加DataIDE上两个云账号之间数据迁移

    这个场景比较容易理解,比如一个公司很可能会申请多个云账号,假如每个云账号都开通了MaxCompute,很可能就会碰到两个云账号的MaxCompute之间数据迁移。公共云上都借助于DataIDE使用MaxCompute,而DataIDE上面本身提供了数据同步任务,我们通过配置数据同步任务即可很容易的完成数据迁移。执行步骤如下:

    1、在其中一个MaxCompute项目空间项目管理中添加数据源,该数据源为另一个云账号的MaxCompute项目空间。

    图片描述

    2、在DataIDE数据开发中新建“数据同步”任务,如果目标数据源中表还不存在,可以点击“快速建ODPS表”,配置字段映射等。

    图片描述

    3、保存之后点击“测试运行”即可。

    场景三:网络不通的两个MaxCompute环境数据迁移

    这种场景做数据同步局限性比较大,由于网络不通,数据迁移必须要在中间落盘后再写入,所以当数据量比较大时要考虑磁盘容量、带宽等问题。步骤如下:

    1、首先也是要先将源MaxCompute项目空间的DDL导出并在目标项目空间创建表,操作同场景一。

    export <projectname> <local_path>;

    2、安装配置ODPS客户端,操作同场景一。

    3、通过ODPS CLT中的tunnel命令实现数据的导出。命令参考:

    图片描述

    Example:

    tunnel download test_project.test_table log.txt

    4、通过ODPS CLT中的tunnel命令实现数据的导入。命令参考:

    图片描述

    Example:

    tunnel upload log.txt test_project.test_table

    原文链接

    阅读更多干货好文,请关注扫描以下二维码:
    图片描述

    展开全文
  • 然后我们之前都添加映射,那么如果我们修改,映射,怎么修改呢? 我们可以直接修改嘛,比如,直接在mappings中修改,对应的类型,可以看到一执行报错对吧.不能直接修改. 可以看到,如果我们这里把这个employee-id,的...

    然后我们之前都添加映射,那么如果我们修改,映射,怎么修改呢?

    我们可以直接修改嘛,比如,直接在mappings中修改,对应的类型,可以看到一执行报错对吧.不能直接修改.

    可以看到,如果我们这里把这个employee-id,的type类型改成long的 话,执行,报错了.还是.

    然后我们可以获取一下my_index索引的_mapping去看看

    可以看到右边,现在my_index有这些索引.

    然后我们可以去看看文档,如果我们想去更新映射的话,那么.

    可以看到上面写了,不能进行直接更新对吧,只能干什么?

    只能重新新创建一个索引,然后创建索引的时候设置数据的映射类型,然后

    最后再把旧的数据,导入到新创建的索引中去,这个时候,新创建的索引,已经设定了新的映射了,为每个属性字段.

    我们去做做试试,我们就把bank这个索引中的数据,的属性的映射给修改一下

    首先我们先去查看一下数据

    GET /bank/_search

    可以看到右边.是所有数据.

     

    然后我们再获取一下映射去看看

    GET /bank/_mapping 去看看映射

    右边. 可以看到获取到了1000条数据,并且每条数据,可以看到都有个_account,这个是数据的类型

    也就是说,我们的数据文档,以前都是有类型的,类型相当于mysql中的表.

     

    但是现在呢?

    我们说es7就已经没有这个类型的概念了,不推荐用了,es8中就废弃了对吧.那怎么办?

    这个时候,我们就需要通过数据迁移的方式,才能实现修改原来数据的映射,也就是某个文档属性的类型

    但是迁移的时候我们需要注意一下,以前版本的数据,是有类型的,文档都是属于某个类型,然后再属于某个索引.

     

    现在没有类型的概念了,所以需要注意.

    我们可以先创建一个新的索引叫做

    PUT /newbank 

    newbank

    然后我们去设置新的索引的mappings

    然后指定properties,然后里面指定,之前bank中的所有的字段,但是指定的时候,这里我们修改一下他们的映射,

    我们这些原来的映射我们可以通过

    GET /bank/_mapping 来进行获取.

     

    然后copy过来,再去修改

    比如这里我们把address,直接修改成text,允许分词查询,他的那个keyword我们给删除,意思是不允许精确查询

    同样的其他的字段,我们也都修改一下他们的映射.

    然后我们继续修改剩下的,属性的映射

    .

    全部修改以后,我们执行,这样就创建好了,一个newbank这个索引,并且映射也都被我们修改了

    然后,一会我们就把bank中的数据,迁移到newbank中去.

    修改完了以后,我们去获取一下看看:

    GET /newbank/_mapping

     

    可以看到右边是我们修改后的这个新的索引的映射,但是这个,新的索引中,还没有数据.

    然后我们进行去迁移去,可以看到之前,type,类型没有废弃之前的迁移方式,很简单

    直接指定一个

    source,这个迁移之前的索引twitter和

    dest,迁移之后的索引.就可以了.

    我们可以去看看

    GET /bank/_search

    看到右边,之前的bank索引下,每个数据都是有个_type的是account,也就是每个文档都属于,这个

    类型下.

    那么这个时候我们再去迁移,就不能按照之前直接指定一个迁移前的索引,一个迁移后的索引就行了,

    因为现在我们去掉了类型,所以现在需要上面这样

    我们指定原索引的,名字,以及类型

    再指定新索引的名字就可以了.

    我们可以看看文档中有说明.

    然后我们去进行迁移

    PST _reindex 这个是用来数据迁移的.

    {
        "source": {
            "index": "bank",
            "type": "account"
        },
        "dest": {
            "index": "newbank"
        }
    }

    可以看到我们指定了:原数据的所以名字bank,和原来数据的类型,account

    然后我们指定了目标索引的名字newbank ,这样就可以了.

    我们执行以后,这样就迁移完了,然后我们再去查看

    GET /newbank/_search

    新的索引中的数据newbank

    可以看到1000条数据都导入进来了,但是,数据的类型全部变成了,默认的那个_doc对吧.

    因为新版的es已经不建议使用type了,es8,会把这个数据的类型的概念删除掉.

    所以对于旧数据的迁移可以使用,索引名字和索引类型

    对于新数据的迁移,直接使用索引名字就可以了.

     

     

    技术交流QQ群【JAVA,C++,Python,.NET,BigData,AI】:170933152
    开通了个人技术微信公众号:credream,有需要的朋友可以添加相互学习

     

     

     

     

     

     

     

     

    展开全文
  • 如果你不想手写文档,那么试试接口的数据生成功能,可以对接口运行的数据一键生成文档信息。 3.mock的无缝整合,DOClever自己就是一个mock服务器,当你把接口的开发状态设置成已完成,本地mock便会自动请求真实接口...
  • mysql导入oracle的方法:首先将...推荐:《mysql视频教程》将mysql数据库导入oracle:第一种方法:使用数据迁移工具第二种方法:一、将表中数据导入文本文件保存,我是在win下的命令行模式做的Mysql>select * from...

    mysql导入oracle的方法:首先将表中数据导入文本文件保存;然后写控制文件,并用记事本打开文档,写完后改扩展名为“.ctl”;接着用sqlldr导入文本;最后加载控制文件自动导入即可。

    2020102610015844433.jpg

    推荐:《mysql视频教程》

    将mysql数据库导入oracle:

    第一种方法:使用数据迁移工具

    第二种方法:

    一、将表中数据导入文本文件保存,我是在win下的命令行模式做的Mysql>select * from my_mysql_table into outfile 'c: /my_tmp.txt';

    二、写控制文件用记事本开文档写完后改扩展名为.ctl,以下是具体内容load datainfile 'c:/my_tmp.txt'into table my_ora_tablereplace fields terminated by x'09'(字段1,字段2,字段3,......字段N)字段1~N是你要导入的Mysql的表字段数据,不需要的字段可以不写。

    三、用sqlldr导入文本c:\>sqlldr ora_usr回车后输入控制文件的路径,密码,接下来加载控制文件自动导入。

    导入完成后,会生成个.log文件,可以查看你导入是否成功,不成功按提示的错误查找原因。

    注意的是:

    导入文本前,应在oracle数据库中事先建好要写入数据的表,并且要和所要导入的数据字段一致,如果不知Mysql的表结构,可以在Mysql>show create table my_mysql_table;查看建表的SQL,将其转换成oracle中可执行的SQL.

    展开全文

空空如也

空空如也

1 2 3 4 5 ... 7
收藏数 135
精华内容 54
关键字:

数据迁移文档怎么写