DataX的简单使用

DataX是阿里开源的离线数据同步工具,支持多种数据源间的数据迁移。本文通过实例演示了如何使用DataX将MySQL数据同步到MySQL另一表、HDFS以及HBase,包括json配置文件的编写和执行命令,展示了数据同步的完整流程。
摘要由CSDN通过智能技术生成

DataX简介

DataX是什么

DataX是阿里开发的一款离线的数据同步平台,实现异构数据源之间高效的数据同步功能,单台机器就可以操作,底层是JVM,高并发

在不使用这个工具之前,我们做数据之间的同步需要使用sqoop或者写到本地,或者写Java代码完成,做的事情是一个框架到一个框架,大概是这样的样式,其中的读取、转化、传输都需要Java代码完成
在这里插入图片描述
在集成了DataX之后,其中的转化由DataX自己完成,大概是这样的样式
在这里插入图片描述

DataX可以支持哪些数据源之间的同步

可以进入github中直接搜索datax

在这里插入图片描述
点进去我们可以看到datax的源码,以及支持哪些数据源
在这里插入图片描述

DataX如何使用

需要从什么地方取数据,就点进“读”,看需要什么样的json格式
需要从什么地方写数据,就点金“写”,看需要什么样的json格式

假设我们“读”MySQL的数据源,点进MySQL的“读”
可以看到这里给我们写了一些范例,对着修改即可,
需要“读”操作,就修改“reader”里面的内容
需要“写”操作,就修改“writer”里面的内容
在这里插入图片描述

举例mysqlTomysql

这里是将student库中的student表,导入一份到student库中的student2表
student表的样式:
在这里插入图片描述
创建一个json格式的文件

对照着github,我们可以看出我们所需要配置的json格式大致需要配置这些内容,其中"content"是一个数组,但我们一般都只填入一份即可,其中的reader是从哪里读取的数据源,writer是写入哪里的数据源
在这里插入图片描述
具体
json格式如下
要事先在MySQL中创建好要传入的另一张表

{
    "job": {
        "content": [
            {
                "reader": {
                    "name": "mysqlreader",
                    "parameter": {
                        "username": "root",
                        "password": "123456",
                        "column": [
                            "id",
                            "name",
                            "age",
                            "gender",
                            "clazz",
                            "last_mod"
                        ],
                        "splitPk": "age",
                        "connection": [
                            {
                                "table": [
                                    "student"
                                ],
                                "jdbcUrl": [
                                    "jdbc:mysql://master:3306/student"
                                ]
                            }
                        ]
                    }
                },
                "writer": {
                    "name": "mysqlwriter",
                    "parameter": {
                        "writeMode": "insert",
                        "username": "root",
                        "password": "123456",
                        "column": [
                            "id",
                            "name",
                            "age",
                            "gender",
                            "clazz",
                            "last_mod"
                        ],
                        "preSql": [
                            "truncate student2"
                        ],                        
                        "connection": [
                            {
                                "jdbcUrl": "jdbc:mysql://master:3306/student?useUnicode=true&characterEncoding=utf8",
                                "table": [
                                    "student2"
                                ]
                            }
                        ]
                    }
                }
            }
        ],
        "setting": {
            "speed": {
                "channel": 6
            }
        }
    }
}

在DataX的bin目录下执行该命令
在这里插入图片描述
可以看到数据导入到student2成功
在这里插入图片描述

举例mysqlTohdfs

大致过程与上面一样,需要读的是MySQL的数据源,就在“reader”中写入需要读取的MySQL数据源的样式,需要写到hdfs,就在“writer”中写入hdfs数据源的样式
要事先在hive中创建好对应的数据库和对应的表
具体json格式如下

{
    "job": {
        "content": [
            {
                "reader": {
                    "name": "mysqlreader",
                    "parameter": {
                        "username": "root",
                        "password": "123456",
                        "column": [
                            "id",
                            "name",
                            "age",
                            "gender",
                            "clazz",
                            "last_mod"
                        ],
                        "splitPk": "age",
                        "connection": [
                            {
                                "table": [
                                    "student"
                                ],
                                "jdbcUrl": [
                                    "jdbc:mysql://master:3306/student"
                                ]
                            }
                        ]
                    }
                },
                "writer": {
                    "name": "hdfswriter",
                    "parameter": {
                        "defaultFS": "hdfs://master:9000",
                        "fileType": "text",
                        "path": "/user/hive/warehouse/datax.db/students",
                        "fileName": "student",
                        "column": [
                            {
                                "name": "id",
                                "type": "bigint"
                            },
                            {
                                "name": "name",
                                "type": "string"
                            },
                            {
                                "name": "age",
                                "type": "INT"
                            },
                            {
                                "name": "gender",
                                "type": "string"
                            },
                            {
                                "name": "clazz",
                                "type": "string"
                            },
                            {
                                "name": "last_mod",
                                "type": "string"
                            }
                        ],
                        "writeMode": "append",
                        "fieldDelimiter": ","
                    }
                }
            }
        ],
        "setting": {
            "speed": {
                "channel": 6
            }
        }
    }
}

数据传输成功
在这里插入图片描述

合并hdfs不同分区数据的一种方式

我们可以看到虽然上面的数据已经从MySQL导入到hdfs成功,但是会出现很多分区,我们试着将这些分区合并成一个
创建一个和上面表结构一样的表
在这里插入图片描述
将表中的数据直接导入即可,最后出现的分区就会从许多个变成一个
在这里插入图片描述

举例mysqlTohbase

具体的json格式如下

{
  "job": {
    "setting": {
      "speed": {
        "channel": 5
      }
    },
    "content": [
      {
        "reader": {
            "name": "mysqlreader",
            "parameter": {
                "username": "root",
                "password": "123456",
                "column": [
                    "id",
                    "name",
                    "age",
                    "gender",
                    "clazz",
                    "last_mod"
                ],
                "splitPk": "age",
                "connection": [
                    {
                        "table": [
                            "student"
                        ],
                        "jdbcUrl": [
                            "jdbc:mysql://master:3306/student"
                        ]
                    }
                ]
            }
        },
        "writer": {
          "name": "hbase11xwriter",
          "parameter": {
            "hbaseConfig": {
              "hbase.zookeeper.quorum": "master,node1,node2",
              "hbase.zookeeper.property.clientPort": "2181",
              "hbase.rootdir": "hdfs://master:9000/hbase",
              "hbase.cluster.distributed": "true",
              "zookeeper.znode.parent": "/hbase"
            },
            "table": "student",
            "mode": "normal",
            "rowkeyColumn": [
                {
                  "index":0,
                  "type":"string"
                }
            ],
            "column": [
              {
                "index":1,
                "name": "info:id",
                "type": "int"
              },
              {
                "index":2,
                "name": "info:name",
                "type": "string"
              },
              {
                "index":3,
                "name": "info:age",
                "type": "int"
              },
              {
                "index":4,
                "name": "info:gender",
                "type": "string"
              },
              {
                "index":5,
                "name": "info:clazz",
                "type": "string"
              },
              {
                "index":6,
                "name": "info:last_mod",
                "type": "string"
              }
            ],
            "encoding": "utf-8"
          }
        }
      }
    ]
  }
}

hbase中创建相应的表和格式
在这里插入图片描述

导入成功
在这里插入图片描述
再次使用phoenix创建hbase相应的视图进行查看
在这里插入图片描述
数据导入成功
在这里插入图片描述

感谢阅读,我是啊帅和和,一位大数据专业大四学生,祝你快乐。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

啊帅和和。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值