数据迁移工具之datax的安装

1、datax的介绍

        DataX是阿里巴巴开源的一个异构数据源离线同步工具,可以实现包括关系型数据库(如MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。它致力于解决数据孤岛问题,帮助企业更好地管理和利用数据资产。

2、datax和sqoop的区别

        DataX和Sqoop都是数据迁移工具,但是它们在处理机制、使用场景以及支持的数据源方面存在显著的区别。Sqoop是Apache开源的一个用于在Hadoop和关系型数据库之间进行大量数据传输的工具,它采用的是MapReduce计算框架,可以在多个节点上同时进行数据的导入导出操作,提供了良好的并发性和容错性。而DataX是阿里巴巴开源的一个异构数据源离线同步工具,它可以在运行DataX的单机上完成数据的抽取和加载,速度相较于Sqoop会慢一些。

        DataX有强大的灵活性,它可以实现关系型数据库与hadoop组件、关系型数据库之间以及hadoop组件之间的数据迁移。

        DataX无法实现分布式部署,但它可以在传输过程中进行数据过滤,并可以统计传输数据的信息。

        DataX中的数据导入导出,是并行执行的,并且是基于内存的,所以比较快!

3、datax的安装

下载链接:https://pan.baidu.com/s/1fDweCVmGHwNtaAdanl52GA?pwd=xa33 

1、上传  /opt/software
2、解压   tar -zxvf /opt/software/datax.tar.gz  -C /opt/
3、修改/etc/profile
   配置环境变量:
   export DATAX_HOME=/opt/datax
   export PATH=$PATH:$DATAX_HOME/bin
   
  4、刷新环境变量

 source /etc/profile

4、测试datax

4.1、官方自带demo

在datax/job/job.json

1、修改如下的地方

第一个地方代表数据生成的数量

第二个地方代表是否在控制台进行打印

2、运行

datax.py /opt/datax/job/job.json

4.2、读取mysql的数据,将数据展示在控制台上。

ps:连接mysql需要在datax的lib中添加mysql的连接器        

在job 文件夹 创建一个文件 mysql2stream.json ,代码如下,运行方式同上

{
  "job": {
    "setting": {
      "speed": {
        "channel":1
      }
    },
    "content": [
      {
        "reader": {
          "name": "mysqlreader",
          "parameter": {
            "username": "root",
            "password": "123456",
            "connection": [
              {
                "querySql": [
                  "要查询的sql语句;"
                ],
                "jdbcUrl": [
                  "jdbc:mysql://主机名:3306/sqoop"
                ]
              }
            ]
          }
        },
        "writer": {
          "name": "streamwriter",
          "parameter": {
            "print": true,
            "encoding": "UTF-8"
          }
        }
      }
    ]
  }
}

4.3、读取hdfs的数据

同样在job下创建readhdfs.json

{
    "job": {
        "setting": {
            "speed": {
                "channel": 3
            }
        },
        "content": [
            {
                "reader": {
                    "name": "hdfsreader",
                    "parameter": {
                        "path": "/home/a.txt",
                        "defaultFS": "hdfs://bigdata01:9820",
                        "column": [ "*" ],
                        "fileType": "text"
                    }
                },
                "writer": {
                    "name": "streamwriter",
                    "parameter": {
                        "print": true
                    }
                }
            }
        ]
    }
}

4.4、将数据导入到hdfs上

ps:hdfs上的路径必须提前创建好

{
    "job": {
        "setting": {
            "speed": {
                "channel": 3
            }
        },
        "content": [
            {
                "reader": {
                    "name": "streamreader",
                    "parameter": {
                        "column": [
                            {"value": "9870", "type": "long" },
                            {"value": "SHAWN", "type": "string"},
                            {"value": "BOSS", "type": "string"},
                            {"value": "1999-01-01", "type": "string"},
                            {"value": "99999", "type": "long"}
                        ],
                        "sliceRecordCount": 10
                    }
                },
                "writer": {
                    "name": "hdfswriter",
                    "parameter": {
                        "defaultFS": "hdfs://bigdata01:9820",
                        "path": "/datax/emp",
                        "fileName": "emp",
                        "column": [
                            {"name": "empno", "type": "string"},
                            {"name": "ename", "type": "string"},
                            {"name": "job", "type": "string"},
                            {"name": "hiredate", "type": "string"},
                            {"name": "sal", "type": "double"}
                        ],
                        "fileType": "text",
                        "writeMode": "append",
                          "fieldDelimiter": "\t"
                    }
                }
            }
        ]
    }
}

4.5、将mysql的数据导入到hive中

需要在hive中创建与mysql对于的表(注意字段)

{
    "job": {
        "setting": {
            "speed": {
                 "channel": 3
            },
            "errorLimit": {
                "record": 0,
                "percentage": 0.02
            }
        },
        "content": [
            {
                "reader": {
                    "name": "mysqlreader",
                    "parameter": {
                        "writeMode": "insert",
                        "username": "root",
                        "password": "123456",
                        "column": [
                            "id",
                            "area_code",
                            "province_name",
                            "iso"
                        ],
                        "splitPk": "id",
                        "connection": [
                            {
                                "table": [
                                    "base_area"
                                ],
                                "jdbcUrl": [
     "jdbc:mysql://bigdata01:3306/sqoop"
                                ]
                            }
                        ]
                    }
                },
               "writer": {
                    "name": "hdfswriter",
                    "parameter": {
                        "defaultFS": "hdfs://bigdata01:9820",
                        "fileType": "text",
                        "path": "/data/nshop/ods/ods_01_base_area/",
                        "fileName": "base_area_txt",
                        "column": [
                            {
                                "name": "id",
                                "type": "int"
                            },
                            {
                                "name": "area_code",
                                "type": "string"
                            },
                            {
                                "name": "province_name",
                                "type": "string"
                            },
                            {
                                "name": "iso",
                                "type": "string"
                            }
                        ],
                        "writeMode": "append",
                        "fieldDelimiter": ","
                    }
                }
            }
        ]
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值