DataX 自学使用


前言

数据采集在数仓中是指将数据从源数据端采集到目标端的过程。涉及到数据库到数据库的数据同步问题,DataX是其中的一种工具,DataX是一个异构数据源离线同步工具。


第1章、概述

1.1 DataX是什么?

  • DataX是阿里巴巴开源的一个异构数据源离线同步工具。
  • 开源地址:https://github.com/alibaba/DataX

1.2 DataX的设计

为解决异构数据源同步问题,DataX将复杂的网状同步链路变成了星型数据链路,DataX作为中间传输载体负责连接各种数据源。

在这里插入图片描述

1.3 支持的数据源

DataX目前已经有较全面的插件体系,主流的RDBMS数据库,NOSQL,大数据计算系统都已经接入。
在这里插入图片描述

1.4 框架设计

在这里插入图片描述

  • Reader:数据采集模块,负责采集数据源的数据,将数据发送给Framework。
  • Writer:数据写入模块,负责不断向Framework取数据,将数据写入到目的端。
  • Framework:用于连接reader和writer,作为两者的数据传输通道,并处理缓冲,流控,并发,数据转换等核心技术问题。

1.5 运行原理

在这里插入图片描述

  • Job:单个作业的管理节点,负责数据清理、子任务划分、TaskGroup监控管理。
  • Task:由Job切分而来,是DataX作业的最小单元,每个Task负责一部分数据的同步工作。
  • Schedule:将Task组成TaskGroup,单个TaskGroup的并发数量是5.
  • TaskGroup:负责启动Task。

举例来说,用户提交了一个 DataX 作业,并且配置了 20 个并发,目的是将一个 100 张
分表的 mysql 数据同步到 odps 里面。 DataX 的调度决策思路是:
1)DataXJob 根据分库分表切分成了 100 个 Task。
2)根据 20 个并发,DataX 计算共需要分配 4 个 TaskGroup。
3)4 个 TaskGroup 平分切分好的 100 个 Task,每一个 TaskGroup 负责以 5 个并发共计运
行 25 个 Task。

第2章 快速入门

2.1 官方地址

下载地址:http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz
源码地址:https://github.com/alibaba/DataX

2.3 安装

将下载好的 datax.tar.gz 上传到 hadoop102 的/opt/software
2)解压 datax.tar.gz 到/opt/module

tar -zxvf datax.tar.gz -C /opt/module/

3)运行自检脚本

cd /opt/module/datax/bin/
python datax.py /opt/module/datax/job/job.json

第3章 使用案例

3.1 从stream流读取数据并打印到控制台

  1. 查看配置模板
cd /opt/module/datax/bin
python datax.py -r streamreader -w streamwriter
  1. 编辑模板
vim stream2stream.json

内容

{
 "job": {
 "content": [
 {
 "reader": {
 "name": "streamreader",
 "parameter": {
 "sliceRecordCount": 10,
 "column": [
 {
 "type": "long",
 "value": "10"
 },
 {
 "type": "string",
 "value": "hello,DataX"
 }
 ]
 }
 },
 "writer": {
 "name": "streamwriter",
 "parameter": {
 "encoding": "UTF-8",
 "print": true
 }
 }
 }
 ],
 "setting": {
 "speed": {
 "channel": 1
 }
 }
 }
}

3)运行

/opt/module/datax/bin/datax.py /opt/module/datax/job/stream2stream.json

3.2 读取Mysql中的数据存放到Hdfs

3.2.1 参数解析
  • mysqlreader 参数解析:
    在这里插入图片描述
  • hdfswriter 参数解析:
    在这里插入图片描述
3.2.2 准备数据

创建student表并插入数据

create database datax;
use database;
create table student(id int,name varchar(20));
 insert into student values(1001,'zhangsan'),(1002,'lisi'),(1003,'wangwu');
3.2.3 编写配置文件
vim /opt/module/datax/job/mysql2hdfs.json
{
 "job": {
 "content": [
 {
 "reader": {
 "name": "mysqlreader", 
 "parameter": {
 "column": [
 "id",
 "name"
 ], 
 "connection": [

 {
 "jdbcUrl": [
 "jdbc:mysql://hadoop102:3306/datax"
 ], 
 "table": [
 "student"
 ]
 }
 ], 
 "username": "root", 
 "password": "000000"
 }
 }, 
 "writer": {
 "name": "hdfswriter", 
 "parameter": {
 "column": [
 {
 "name": "id",
"type": "int"
 },
 {
 "name": "name",
"type": "string"
 }
 ], 
 "defaultFS": "hdfs://hadoop102:9000", 
 "fieldDelimiter": "\t", 
 "fileName": "student.txt", 
 "fileType": "text", 
 "path": "/", 
 "writeMode": "append"
 }
 }
 }
 ], 
 "setting": {
 "speed": {
 
 "channel": "1"
 }
 }
 }
}

总结

DataX是阿里巴巴开源的一个异构数据源离线同步工具。

本文学习参考尚硅谷Datax课程

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值