Centos安装Datax

Centos7安装DataX

    • 一、DataX简介
    • 二、DataX的数据源支持
    • 三、安装DataX
      • 1、下载DataX
      • 2、解压
      • 3、检验是否安装成功
      • 4、使用
    • 四、实践案例
      • 1、环境信息
      • 2、编写同步的配置文件(user_info.json)
      • 3、执行同步
      • 4、验证同步结果

一、DataX简介

        DataX 是阿里云 DataWorks数据集成 的开源版本,在阿里巴巴集团内被广泛使用的离线数据同步工具/平台。DataX 实现了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、Hologres、DRDS, databend 等各种异构数据源之间高效的数据同步功能。
源码地址点这里

二、DataX的数据源支持

        DataX目前已经有了比较全面的插件体系,主流的RDBMS数据库、NOSQL、大数据计算系统都已经接入,目前支持数据如下图:

类型数据源Reader(读)Writer(写)文档
RDBMS 关系型数据库MySQL读 、写
Oracle读 、写
OceanBase读 、写
SQLServer读 、写
PostgreSQL读 、写
DRDS读 、写
Kingbase读 、写
通用RDBMS(支持所有关系型数据库)读 、写
阿里云数仓数据存储ODPS读 、写
ADB
ADS
OSS读 、写
OCS
Hologres
AnalyticDB For PostgreSQL
阿里云中间件datahub读 、写
SLS读 、写
图数据库阿里云 GDB读 、写
Neo4j
NoSQL数据存储OTS读 、写
Hbase0.94读 、写
Hbase1.1读 、写
Phoenix4.x读 、写
Phoenix5.x读 、写
MongoDB读 、写
Cassandra读 、写
数仓数据存储StarRocks读 、写
ApacheDoris
ClickHouse读 、写
Databend
Hive读 、写
kudu
selectdb
无结构化数据存储TxtFile读 、写
FTP读 、写
HDFS读 、写
Elasticsearch
时间序列数据库OpenTSDB
TSDB读 、写
TDengine读 、写

三、安装DataX

1、下载DataX

在源码中可以下载到DataX安装包:datax.tar.gz。
在这里插入图片描述

2、解压

tar -zxvf datax.tar.gz

在这里插入图片描述

3、检验是否安装成功

# 如下路径更换为自己的路径
python /wz_program/datax/bin/datax.py /wz_program/datax/job/job.json

在这里插入图片描述
出现如下内容则说明已安装成功:
在这里插入图片描述

4、使用

        DataX使用只需要根据自己同步的数据的数据源与数据的目的地选择对应的Reader和Writer,将Reader和Writer信息配置到一个json文件中,然后执行同步命令即可完成数据同步。

四、实践案例

描述:将mysql数据库user_info表中的1500条数据同步到HDFS的/user_info中(HDFS需要提前安装好)。

1、环境信息

mysql信息如下:

CREATE TABLE `user_info` (
  `id` int NOT NULL AUTO_INCREMENT,
  `user_id` int NOT NULL,
  `username` varchar(255) NOT NULL,
  `email` varchar(255) NOT NULL,
  `phone_number` varchar(30) DEFAULT NULL,
  `status` enum('active','inactive') DEFAULT 'active',
  `score` int unsigned DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=16280 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci

在这里插入图片描述
HDFS信息如下:
在这里插入图片描述
特别注意:DataX向HDFS同步数据时,一定要保证目标路径已存在,否则会同步失败。
在这里插入图片描述

hadoop fs -mkdir /user_info

2、编写同步的配置文件(user_info.json)

{
    "job": {
        "content": [
            {
                "reader": {
                    "name": "mysqlreader",
                    "parameter": {
                        "column": [
                            "id",
                            "user_id",
                            "username",
                            "email",
                            "phone_number",
                            "status",
                            "score"
                        ],
                        "where": "id>=3",
                        "connection": [
                            {
                                "jdbcUrl": [
                                    "jdbc:mysql://*************:3306/hadoop"
                                ],
                                "table": [
                                    "user_info"
                                ]
                            }
                        ],
                        "password": "**********",
                        "splitPk": "",
                        "username": "root"
                    }
                },
                "writer": {
                    "name": "hdfswriter",
                    "parameter": {
                        "column": [
                            {
                                "name": "id",
                                "type": "bigint"
                            },
                            {
                                "name": "user_id",
                                "type": "bigint"
                            },
                            {
                                "name": "username",
                                "type": "string"
                            },
                            {
                                "name": "email",
                                "type": "string"
                            },
                            {
                                "name": "phone_number",
                                "type": "string"
                            },
                            {
                                "name": "status",
                                "type": "string"
                            },
                            {
                                "name": "score",
                                "type": "string"
                            }
                        ],
                        "compress": "gzip",
                        "defaultFS": "hdfs://hadoop001:8020",
                        "fieldDelimiter": "\t",
                        "fileName": "user_info",
                        "fileType": "text",
                        "path": "/user_info",
                        "writeMode": "append"
                    }
                }
            }
        ],
        "setting": {
            "speed": {
                "channel": 1
            }
        }
    }
}

MySQLReader配置说明:

{
   "name": "mysqlreader",    #Reader的名称,固定写法,可以从官方文档中获取到(如上DataX的数据源支持中的表格)
   "parameter": {
       "column": [   #需要同步的字段,["*"]则表示所有列
           "id",
           "user_id",
           "username",
           "email",
           "phone_number",
           "status",
           "score"
       ],
       "where": "id>=3",   #where过滤条件,可以过滤掉不需要同步的数据
       "connection": [
           {
               "jdbcUrl": [
                   "jdbc:mysql://*************:3306/hadoop"   #需要同步的数据库url
               ],
               "table": [
                   "user_info"     #需要同步的数据库表名
               ]
           }
       ],
       "password": "**********",   #数据库密码
       "splitPk": "",     #分片字段,如果不指定则只会有单个Task
       "username": "root"  #数据库用户名
   }
}

HDFSWriter的配置说明:

{
    "name": "hdfswriter",  #Writer的名称,固定写法,可以从官方文档中获取到(如上DataX的数据源支持中的表格)
    "parameter": {
        "column": [  #列信息,包括列明和类型的设置
            {
                "name": "id",
                "type": "bigint"
            },
            {
                "name": "user_id",
                "type": "bigint"
            },
            {
                "name": "username",
                "type": "string"
            },
            {
                "name": "email",
                "type": "string"
            },
            {
                "name": "phone_number",
                "type": "string"
            },
            {
                "name": "status",
                "type": "string"
            },
            {
                "name": "score",
                "type": "string"
            }
        ],
        "compress": "gzip",   #HDFS压缩类型,text文件支持gzip和bzip2;orc文件支持NONE和SNAPPY
        "defaultFS": "hdfs://hadoop001:8020",   #HDFS文件系统namenode节点地址
        "fieldDelimiter": "\t",   #同步到HDFS文件字段的分隔符
        "fileName": "user_info",   #HDFS文件名前缀,如下图所示
        "fileType": "text",  #HDFS文件类型,目前支持text和orc
        "path": "/user_info",  #HDFS文件系统目标路径
        "writeMode": "append"  #数据写入模式(append:追加;nonConflict:若写入目录有同名文件【前缀相同】,则会报错)
    }
}

在这里插入图片描述

3、执行同步

python /wz_program/datax/bin/datax.py /wz_program/datax/job/user_info.json

在这里插入图片描述

4、验证同步结果

进入hdfs查询同步后的文件,前缀即为我们配置的名称,下载该文件查询同步的结果:
在这里插入图片描述

同步结果如下:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/314228.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Minitab的单因子方差分析的结果

单因子方差分析概述 当有一个类别因子和一个连续响应并且想要确定两个或多个组的总体均值是否存在差异时,可使用 单因子方差分析。如果经检验,发现至少有一组存在差异,请使用单因子方差分析中的比较对话框来标识存在显著差异的组对。 例如&…

C++ 之LeetCode刷题记录(九)

😄😊😆😃😄😊😆😃 开始cpp刷题之旅,多学多练,尽力而为。 先易后难,先刷简单的。 58. 最后一个单词的长度 给你一个字符串 s,由若干…

代码随想录第第五十七天—回文子串,最长回文子序列

leetcode 647. 回文子串 题目链接:回文子串 版本一:动态规划 dp数组及下标的含义 dp[i][j]:区间范围[i, j] (左闭右闭)的子串是否是回文子串,如果是dp[i][j]为true,否则为false。确定递推公式…

Notepad++安装步骤

Notepad是一款文本编辑工具,支持27种编程语言,通吃C,C ,Java ,C#, XML, HTML, PHP,JS 等,该软件拥有完整的中文化接口及支持多国语言编写的功能,不仅可以用来制作一般的纯文字说明文件,还非常适合编写计算机程序代码&a…

大数据StarRocks(五) :数据类型

StarRocks 支持数据类型:数值类型、字符串类型、日期类型、半结构化类型、其他类型。您在建表时可以指定以下类型的列,向表中导入该类型的数据并查询数据。 5.1 数值类型 SMALLINT2 字节有符号整数,范围 [-32768, 32767] INT4 字节有符号整…

leetcode 动态规划(爬楼梯、零钱兑换、完全平方数)

70. 爬楼梯&#xff08;进阶版&#xff09; 卡码网&#xff1a;57. 爬楼梯(opens new window) 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬至多m (1 < m < n)个台阶。你有多少种不同的方法可以爬到楼顶呢&#xff1f; 注意&#xff1a;给定 n 是一个正…

RedisTemplate使用zadd报错java.lang.StackOverflowError

代码当中使用RedisTemplate操作String、List都是正常的&#xff0c;但是操作zadd就会报错&#xff0c;有人说是这两个依赖的版本不一致的问题&#xff0c;但是项目中还有其他地方要用到&#xff0c;所以改版本号行不通&#xff0c; <dependency><groupId>org.redis…

DHCP与时间同步

目录 一、DHCP 1、DHCP定义 1.什么是DHCP 2.DHCP的好处 3.DHCP的分配方式 4.为什么使用DHCP 5.DHCP模式 2、DHCP的工作过程 3、DHCP动态配置主机地址 1.DHCP服务的优点 2.可分配的地址信息 3.动态分配IP地址 二、时间同步 1、ntp 2、chrony 1、搭建本地本地时间…

SpringSecurity入门demo(一)集成与默认认证

一、集成与默认认证&#xff1a; 1、说明&#xff1a;在引入 Spring Security 项目之后&#xff0c;没有进行任何相关的配置或编码的情况下&#xff0c;Spring Security 有一个默认的运行状态&#xff0c;要求在经过 HTTP 基本认证后才能访问对应的 URL 资源&#xff0c;其默认…

对于软件测试的认识和了解

对软件测试的认识&#xff1a; 软件测试要求开发人员避免测试自己开发的程序。从心理学角度讲&#xff0c;这是很有道理的。特别是一个相对复杂的系统&#xff0c;开发人员在刚刚开发完成的时候&#xff0c;尚沉浸于对自己设计的回味之中。此时去测试的话往往会侧重于程序本身的…

啥,凭什么Python中函数的返回值可以有多个?

你好&#xff0c;我是安然无虞。 文章目录 函数函数定义格式函数调用默认参数和变长参数默认参数变长参数 变量的作用域 函数 编程语言中的函数&#xff0c;是一段可以被重复使用的代码片段&#xff0c;使用函数能够减少冗余的代码。 函数定义格式 def 函数名(形参列表):函数…

JavaScript高级程序设计读书记录(十二):函数

函数是ECMAScript中最有意思的部分之一&#xff0c;这主要是因为函数实际上是对象。每个函数都是Function 类型的实例&#xff0c;而 Function 也有属性和方法&#xff0c;跟其他引用类型一样。因为函数是对象&#xff0c;所以函数名就是 指向函数对象的指针&#xff0c;而且不…

Python 解决安装三方包失败的问题

pip 安装三方包失败&#xff0c;常见的情况有三种&#xff1a;不能访问源所在服务器&#xff1b;Python 版本不支持&#xff1b;和本地版本冲突。 不能访问源服务器 对于这张问题&#xff0c;有两种解决方法 # 方法一 pip config set global.index-url <源服务器> pip…

文件操作(你真的会读写文件吗?)

文章目录 一、为什么使用文件&#xff1f;二、什么是文件&#xff1f;2.1 程序文件2.2 数据文件2.3 文件名 三、二进制文件和文本文件3.1 二进制文件3.2 文本文件 四、文件的打开和关闭4.1 流和标准流4.1.1 流4.1.2 标准流 4.2 文件指针4.3 fopen和fclose 五、文件的顺序读写5.…

多无人机集群智能flocking

matlab2020可运行 GitHub - pareshbhambhani/MultiAgent-Flocking-framework: This is part of the current research I am working on.

NX二次开发点通过云配准获取相同体

先找到体的参考方向&#xff08;这个参考方向对于相同体重合之后是相同的&#xff09;&#xff0c;这个时候我们的思路是三个不共线的点确定一个坐标系&#xff0c;然后和绝对方向求转换矩阵。然后获取体的所有边的几何中心&#xff0c;把这些点通过转换矩阵转换之后存起来&…

因成本不断增加,阿里云发布区域调价公告|一周IT资讯

因成本不断增加&#xff0c;阿里云发布域名调价公告 1月9日晚&#xff0c;阿里云在官网发布域名调价公告&#xff1a;因注册局成本上调、域名实名制审核等服务成本不断增加&#xff0c;经慎重考虑&#xff0c;现决定于2024年2月1日&#xff0c;对 .net 英文域名进行价格调整&a…

Java的NIO

Java NIO&#xff08;New I/O&#xff0c;新 I/O&#xff09;是 Java 1.4 版本引入的一组用于进行非阻塞 I/O 操作的 API。相比于传统的 Java I/O&#xff08;或称为 IOStream&#xff09;&#xff0c;Java NIO 提供了更为灵活、可扩展和高性能的 I/O 处理方式。 Java NIO 的核…

【昕宝爸爸小模块】深入浅出之Java 8中的 Stream

深入浅出之Java 8中的 Stream 一、&#x1f7e2;典型解析1.1 &#x1f7e0;Java 8中的Stream 都能做什么1.2 &#x1f7e0;Stream的创建 二、✅ Stream中间操作2.1 &#x1f7e0;Filter2.2 &#x1f7e0;Map2.3 &#x1f7e0;limit / skip2.4 &#x1f7e0;sorted2.5 &#x1…

FFmpeg编程录制音频(Mac OS)

之前我们使用FFmpeg命令行工具进行了简单的音视频操作&#xff0c;这次在Mac OS环境下编写代码实现简单的音频录制功能。 FFmpeg命令行音频录制 首先回顾一下Mac OS环境下简单的音频录制命令行实现&#xff1a; ffmpeg -f avfoundation -i ":0" -t 20 -acodec pcm…