CentOS7环境下DataX的安装、使用及问题解决

news2024/12/28 18:38:40

DataX概述

DataX 是阿里巴巴开源的一个异构数据源离线同步工具,致力于实现包括关系型数据库(MySQL、Oracle等)、HDFS、Hive、ODPS、HBase、FTP等各种异构数据源之间稳定高效的数据同步功能。

为了解决异构数据源同步问题,DataX将复杂的网状的同步链路变成了星型数据链路,DataX作为中间传输载体负责连接各种数据源。当需要接入一个新的数据源的时候,只需要将此数据源对接到DataX,便能跟已有的数据源做到无缝数据同步。

Datax架构设计

DataX本身作为离线数据同步框架,采用Framework + plugin架构构建。将数据源读取和写入抽象成为Reader/Writer插件,纳入到整个同步框架中。

DataX 3.0 开源版本支持单机多线程模式完成同步作业运行,本小节按一个DataX作业生命周期的时序图,从整体架构设计非常简要说明DataX各个模块相互关系。

核心模块介绍

  1. DataX完成单个数据同步的作业,我们称之为Job,DataX接受到一个Job之后,将启动一个进程来完成整个作业同步过程。DataX Job模块是单个作业的中枢管理节点,承担了数据清理、子任务切分(将单一作业计算转化为多个子Task)、TaskGroup管理等功能。
  2. DataXJob启动后,会根据不同的源端切分策略,将Job切分成多个小的Task(子任务),以便于并发执行。Task便是DataX作业的最小单元,每一个Task都会负责一部分数据的同步工作。
  3. 切分多个Task之后,DataX Job会调用Scheduler模块,根据配置的并发数据量,将拆分成的Task重新组合,组装成TaskGroup(任务组)。每一个TaskGroup负责以一定的并发运行完毕分配好的所有Task,默认单个任务组的并发数量为5。
  4. 每一个Task都由TaskGroup负责启动,Task启动后,会固定启动Reader—>Channel—>Writer的线程来完成任务同步工作。
  5. DataX作业运行起来之后, Job监控并等待多个TaskGroup模块任务完成,等待所有TaskGroup任务完成后Job成功退出。否则,异常退出,进程退出值非0。

DataX与Sqoop对比

功能DataXSqoop
运行模式单进程多线程MR
分布式不支持,可以通过调度系统规避支持
流控有流控功能需要定制
统计信息已有一些统计,上报需定制没有,分布式的数据收集不方便
数据校验在core部分有校验功能没有,分布式的数据收集不方便
监控需要定制需要定制

DataX的安装

前提条件

  • Linux,这里使用CentOS7

  • JDK1.8及以上,这里使用JDK1.8

  • Python2.x,这里使用Python2.7

在node4机器上操作

下载DataX安装包(安装包有800+M)

[hadoop@node4 installfile]$ wget http://datax-opensource.oss-cn-hangzhou.aliyuncs.com/datax.tar.gz

解压

[hadoop@node4 installfile]$ tar -zxvf datax.tar.gz -C ~/soft/

查看解压后的文件

[hadoop@node4 installfile]$ ls ~/soft/
...
datax
...
​
[hadoop@node4 installfile]$ ls ~/soft/datax
bin  conf  job  lib  log  log_perf  plugin  script  tmp
​
[hadoop@node4 installfile]$ ls ~/soft/datax/bin/
datax.py  dxprof.py  perftrace.py
​
[hadoop@node4 installfile]$ ls ~/soft/datax/job
job.json
​

删除安装包

[hadoop@node4 installfile]$ rm -rf datax.tar.gz

运行官方自带案例

[hadoop@node4 installfile]$ python ~/soft/datax/bin/datax.py ~/soft/datax/job/job.json

执行报错如下:

​
2024-06-27 11:53:54.349 [main] WARN  ConfigParser - 插件[streamreader,streamwriter]加载失败,1s后重试... Exception:Code:[Common-00], Describe:[您提供的配置文件存在错误信息,请检查您的作业配置 .] - 配置信息错误,您提供的配置文件[/home/hadoop/soft/datax/plugin/reader/._drdsreader/plugin.json]不存在. 请检查您的配置文件. 
2024-06-27 11:53:55.358 [main] ERROR Engine - 
​
经DataX智能分析,该任务最可能的错误原因是:
com.alibaba.datax.common.exception.DataXException: Code:[Common-00], Describe:[您提供的配置文件存在错误信息,请检查您的作业配置 .] - 配置信息错误,您提供的配置文件[/home/hadoop/soft/datax/plugin/reader/._drdsreader/plugin.json]不存在. 请检查您的配置文件.
    at com.alibaba.datax.common.exception.DataXException.asDataXException(DataXException.java:26)
    at com.alibaba.datax.common.util.Configuration.from(Configuration.java:95)
    at com.alibaba.datax.core.util.ConfigParser.parseOnePluginConfig(ConfigParser.java:153)
    at com.alibaba.datax.core.util.ConfigParser.parsePluginConfig(ConfigParser.java:125)
    at com.alibaba.datax.core.util.ConfigParser.parse(ConfigParser.java:63)
    at com.alibaba.datax.core.Engine.entry(Engine.java:137)
    at com.alibaba.datax.core.Engine.main(Engine.java:204)
​

​

解决报错:

进入datax解压目录

[hadoop@node4 installfile]$ cd /home/hadoop/soft/datax

查找datax目录下文件名称带有er结尾的文件

[hadoop@node4 datax]$ find ./* -type f -name ".*er"
./plugin/._reader
./plugin/reader/._drdsreader
./plugin/reader/._hdfsreader
./plugin/reader/._otsstreamreader
./plugin/reader/._otsreader
./plugin/reader/._txtfilereader
./plugin/reader/._ftpreader
./plugin/reader/._streamreader
./plugin/reader/._odpsreader
./plugin/reader/._cassandrareader
./plugin/reader/._hbase11xreader
./plugin/reader/._oraclereader
./plugin/reader/._postgresqlreader
./plugin/reader/._mysqlreader
./plugin/reader/._rdbmsreader
./plugin/reader/._mongodbreader
./plugin/reader/._ossreader
./plugin/reader/._sqlserverreader
./plugin/reader/._hbase094xreader
./plugin/._writer
./plugin/writer/._oraclewriter
./plugin/writer/._ocswriter
./plugin/writer/._mysqlwriter
./plugin/writer/._postgresqlwriter
./plugin/writer/._rdbmswriter
./plugin/writer/._mongodbwriter
./plugin/writer/._osswriter
./plugin/writer/._adswriter
./plugin/writer/._hbase094xwriter
./plugin/writer/._sqlserverwriter
./plugin/writer/._hdfswriter
./plugin/writer/._otswriter
./plugin/writer/._drdswriter
./plugin/writer/._txtfilewriter
./plugin/writer/._cassandrawriter
./plugin/writer/._ftpwriter
./plugin/writer/._streamwriter
./plugin/writer/._odpswriter
./plugin/writer/._hbase11xsqlwriter
./plugin/writer/._hbase11xwriter

删除查到的文件

[hadoop@node4 datax]$ find ./* -type f -name ".*er"  | xargs rm -rf

再次运行测试命令,成功如下:

[hadoop@node4 datax]$ python ~/soft/datax/bin/datax.py ~/soft/datax/job/job.json
​
DataX (DATAX-OPENSOURCE-3.0), From Alibaba !
Copyright (C) 2010-2017, Alibaba Group. All Rights Reserved.
​
​
2024-06-27 12:13:32.138 [main] INFO  VMInfo - VMInfo# operatingSystem class => sun.management.OperatingSystemImpl
2024-06-27 12:13:32.145 [main] INFO  Engine - the machine info  => 
​
    osInfo: Oracle Corporation 1.8 25.212-b10
    jvmInfo:    Linux amd64 3.10.0-1160.el7.x86_64
    cpu num:    4
​
    totalPhysicalMemory:    -0.00G
    freePhysicalMemory: -0.00G
    maxFileDescriptorCount: -1
    currentOpenFileDescriptorCount: -1
​
    GC Names    [PS MarkSweep, PS Scavenge]
​
    MEMORY_NAME                    | allocation_size                | init_size                      
    PS Eden Space                  | 256.00MB                       | 256.00MB                       
    Code Cache                     | 240.00MB                       | 2.44MB                         
    Compressed Class Space         | 1,024.00MB                     | 0.00MB                         
    PS Survivor Space              | 42.50MB                        | 42.50MB                        
    PS Old Gen                     | 683.00MB                       | 683.00MB                       
    Metaspace                      | -0.00MB                        | 0.00MB                         
​
​
2024-06-27 12:13:32.162 [main] INFO  Engine - 
{
    "content":[
        {
            "reader":{
                "name":"streamreader",
                "parameter":{
                    "column":[
                        {
                            "type":"string",
                            "value":"DataX"
                        },
                        {
                            "type":"long",
                            "value":19890604
                        },
                        {
                            "type":"date",
                            "value":"1989-06-04 00:00:00"
                        },
                        {
                            "type":"bool",
                            "value":true
                        },
                        {
                            "type":"bytes",
                            "value":"test"
                        }
                    ],
                    "sliceRecordCount":100000
                }
            },
            "writer":{
                "name":"streamwriter",
                "parameter":{
                    "encoding":"UTF-8",
                    "print":false
                }
            }
        }
    ],
    "setting":{
        "errorLimit":{
            "percentage":0.02,
            "record":0
        },
        "speed":{
            "byte":10485760
        }
    }
}
​
2024-06-27 12:13:32.191 [main] WARN  Engine - prioriy set to 0, because NumberFormatException, the value is: null
2024-06-27 12:13:32.193 [main] INFO  PerfTrace - PerfTrace traceId=job_-1, isEnable=false, priority=0
2024-06-27 12:13:32.193 [main] INFO  JobContainer - DataX jobContainer starts job.
2024-06-27 12:13:32.195 [main] INFO  JobContainer - Set jobId = 0
2024-06-27 12:13:32.226 [job-0] INFO  JobContainer - jobContainer starts to do prepare ...
2024-06-27 12:13:32.226 [job-0] INFO  JobContainer - DataX Reader.Job [streamreader] do prepare work .
2024-06-27 12:13:32.226 [job-0] INFO  JobContainer - DataX Writer.Job [streamwriter] do prepare work .
2024-06-27 12:13:32.227 [job-0] INFO  JobContainer - jobContainer starts to do split ...
2024-06-27 12:13:32.228 [job-0] INFO  JobContainer - Job set Max-Byte-Speed to 10485760 bytes.
2024-06-27 12:13:32.229 [job-0] INFO  JobContainer - DataX Reader.Job [streamreader] splits to [1] tasks.
2024-06-27 12:13:32.230 [job-0] INFO  JobContainer - DataX Writer.Job [streamwriter] splits to [1] tasks.
2024-06-27 12:13:32.258 [job-0] INFO  JobContainer - jobContainer starts to do schedule ...
2024-06-27 12:13:32.265 [job-0] INFO  JobContainer - Scheduler starts [1] taskGroups.
2024-06-27 12:13:32.267 [job-0] INFO  JobContainer - Running by standalone Mode.
2024-06-27 12:13:32.292 [taskGroup-0] INFO  TaskGroupContainer - taskGroupId=[0] start [1] channels for [1] tasks.
2024-06-27 12:13:32.305 [taskGroup-0] INFO  Channel - Channel set byte_speed_limit to -1, No bps activated.
2024-06-27 12:13:32.306 [taskGroup-0] INFO  Channel - Channel set record_speed_limit to -1, No tps activated.
2024-06-27 12:13:32.336 [taskGroup-0] INFO  TaskGroupContainer - taskGroup[0] taskId[0] attemptCount[1] is started
2024-06-27 12:13:32.441 [taskGroup-0] INFO  TaskGroupContainer - taskGroup[0] taskId[0] is successed, used[120]ms
2024-06-27 12:13:32.442 [taskGroup-0] INFO  TaskGroupContainer - taskGroup[0] completed it's tasks.
2024-06-27 12:13:42.303 [job-0] INFO  StandAloneJobContainerCommunicator - Total 100000 records, 2600000 bytes | Speed 253.91KB/s, 10000 records/s | Error 0 records, 0 bytes |  All Task WaitWriterTime 0.054s |  All Task WaitReaderTime 0.077s | Percentage 100.00%
2024-06-27 12:13:42.303 [job-0] INFO  AbstractScheduler - Scheduler accomplished all tasks.
2024-06-27 12:13:42.304 [job-0] INFO  JobContainer - DataX Writer.Job [streamwriter] do post work.
2024-06-27 12:13:42.305 [job-0] INFO  JobContainer - DataX Reader.Job [streamreader] do post work.
2024-06-27 12:13:42.306 [job-0] INFO  JobContainer - DataX jobId [0] completed successfully.
2024-06-27 12:13:42.307 [job-0] INFO  HookInvoker - No hook invoked, because base dir not exists or is a file: /home/hadoop/soft/datax/hook
2024-06-27 12:13:42.310 [job-0] INFO  JobContainer - 
     [total cpu info] => 
        averageCpu                     | maxDeltaCpu                    | minDeltaCpu                    
        -1.00%                         | -1.00%                         | -1.00%
                        
​
     [total gc info] => 
         NAME                 | totalGCCount       | maxDeltaGCCount    | minDeltaGCCount    | totalGCTime        | maxDeltaGCTime     | minDeltaGCTime     
         PS MarkSweep         | 0                  | 0                  | 0                  | 0.000s             | 0.000s             | 0.000s             
         PS Scavenge          | 0                  | 0                  | 0                  | 0.000s             | 0.000s             | 0.000s             
​
2024-06-27 12:13:42.311 [job-0] INFO  JobContainer - PerfTrace not enable!
2024-06-27 12:13:42.312 [job-0] INFO  StandAloneJobContainerCommunicator - Total 100000 records, 2600000 bytes | Speed 253.91KB/s, 10000 records/s | Error 0 records, 0 bytes |  All Task WaitWriterTime 0.054s |  All Task WaitReaderTime 0.077s | Percentage 100.00%
2024-06-27 12:13:42.315 [job-0] INFO  JobContainer - 
任务启动时刻                    : 2024-06-27 12:13:32
任务结束时刻                    : 2024-06-27 12:13:42
任务总计耗时                    :                 10s
任务平均流量                    :          253.91KB/s
记录写入速度                    :          10000rec/s
读出记录总数                    :              100000
读写失败总数                    :                   0

DataX的使用

DataX任务提交命令

用户只需根据自己同步数据的数据源和目的地选择相应的Reader和Writer,并将Reader和Writer的信息配置在一个json文件中。提交命令如下:

python bin/datax.py path/to/your/job.json

DataX配置文件格式

可以使用如下命名查看DataX配置文件模板。

[hadoop@node4 ~]$ cd ~/soft/datax/
[hadoop@node4 datax]$ pyhton bin/datax.py -r mysqlreader -w hdfswriter
​

查到文件模板如下:

{
    "job": {
        "content": [
            {
                "reader": {
                    "name": "mysqlreader", 
                    "parameter": {
                        "column": [], 
                        "connection": [
                            {
                                "jdbcUrl": [], 
                                "table": []
                            }
                        ], 
                        "password": "", 
                        "username": "", 
                        "where": ""
                    }
                }, 
                "writer": {
                    "name": "hdfswriter", 
                    "parameter": {
                        "column": [], 
                        "compress": "", 
                        "defaultFS": "", 
                        "fieldDelimiter": "", 
                        "fileName": "", 
                        "fileType": "", 
                        "path": "", 
                        "writeMode": ""
                    }
                }
            }
        ], 
        "setting": {
            "speed": {
                "channel": ""
            }
        }
    }
}

MySQL数据准备

需要准备MySQL8环境,并且能够远程连接。 可参考:安装MySQL8

建库建表操作:这里在node3机器上的mysql上操作

create database if not exists test;
use test;
drop table if exists stu;
create table stu (id int, name varchar(100), age int);
insert into stu values(1,"张三",18);
insert into stu values(2,"李四",20);
insert into stu values(3,"王五",21);
insert into stu values(4,"赵六",22);

同步MySQL数据到HDFS

要求:同步MySQL test数据库中stu表数据到HDFS的/stu目录。

编写配置文件

(1)创建配置文件stu.json

[hadoop@node4 ~]$ vim ~/soft/datax/job/stu.json

(2)配置文件内容如下

{
    "job": {
        "content": [
            {
                "reader": {
                    "name": "mysqlreader",
                    "parameter": {
                        "column": [
                            "id",
                            "name",
                            "age"
                        ],
                        "where": "id>=3",
                        "connection": [
                            {
                                "jdbcUrl": [
                                    "jdbc:mysql://node3:3306/test?useSSL=false&serverTimezone=Asia/Shanghai&useUnicode=true&allowPublicKeyRetrieval=true&characterEncoding=utf-8"
                                ],
                                "table": [
                                    "stu"
                                ]
                            }
                        ],
                        "username": "root",
                        "password": "000000",
                        "splitPk": ""                        
                    }
                },
                "writer": {
                    "name": "hdfswriter",
                    "parameter": {
                        "column": [
                            {
                                "name": "id",
                                "type": "int"
                            },
                            {
                                "name": "name",
                                "type": "string"
                            },
                            {
                                "name": "age",
                                "type": "int"
                            }
                        ],
                        "compress": "gzip",
                        "defaultFS": "hdfs://node2:9820",
                        "fieldDelimiter": "\t",
                        "fileName": "stu",
                        "fileType": "text",
                        "path": "/stu",
                        "writeMode": "append"
                    }
                }
            }
        ],
        "setting": {
            "speed": {
                "channel": 1
            }
        }
    }
}

 提交任务

(1)在HDFS创建/stu目录

[hadoop@node2 ~]$ start-dfs.sh
[hadoop@node2 ~]$ hadoop fs -mkdir /stu

(2)进入DataX根目录

[hadoop@node4 ~]$ cd ~/soft/datax
[hadoop@node4 datax]$ 

(3)执行如下命令

[hadoop@node4 datax]$ python bin/datax.py job/stu.json 

报错

2024-06-27 12:43:27.268 [job-0] WARN  DBUtil - test connection of [jdbc:mysql://node3:3306/test?serverTimezone=Asia/Shanghai&useUnicode=true&allowPublicKeyRetrieval=true&characterEncoding=utf-8] failed, for Code:[DBUtilErrorCode-10], Description:[连接数据库失败. 请检查您的 账号、密码、数据库名称、IP、Port或者向 DBA 寻求帮助(注意网络环境).].  -  具体错误信息为:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server..

解决报错:

经过一番折腾,例如:配置bind-address=0.0.0.0,依然同样的报错。

发现Root Cause是MySQL驱动版本不兼容的问题。

查看mysqlreader/libs下的驱动包

[hadoop@node4 datax]$ ls plugin/reader/mysqlreader/libs/
commons-collections-3.0.jar      druid-1.0.15.jar            logback-core-1.0.13.jar
commons-io-2.4.jar               fastjson-1.1.46.sec01.jar   mysql-connector-java-5.1.34.jar
commons-lang3-3.3.2.jar          guava-r05.jar               plugin-rdbms-util-0.0.1-SNAPSHOT.jar
commons-math3-3.1.1.jar          hamcrest-core-1.3.jar       slf4j-api-1.7.10.jar
datax-common-0.0.1-SNAPSHOT.jar  logback-classic-1.0.13.jar
[hadoop@node4 datax]$ 

发现驱动包是mysql5版本的

mysql-connector-java-5.1.34.jar

换成mysql8版本的驱动包

mysql-connector-j-8.0.31.jar

将mysql8驱动包上传到plugin/reader/mysqlreader/libs目录下,同时删除或重命名mysql5的驱动包(重命名后让mysql5驱动不可用),这里重命名mysql5驱动包。

[hadoop@node4 datax]$ mv plugin/reader/mysqlreader/libs/mysql-connector-java-5.1.34.jar plugin/reader/mysqlreader/libs/mysql-connector-java-5.1.34.jar.bak
[hadoop@node4 datax]$ ls plugin/reader/mysqlreader/libs/
commons-collections-3.0.jar      druid-1.0.15.jar            logback-core-1.0.13.jar
commons-io-2.4.jar               fastjson-1.1.46.sec01.jar   mysql-connector-j-8.0.31.jar
commons-lang3-3.3.2.jar          guava-r05.jar               mysql-connector-java-5.1.34.jar.bak
commons-math3-3.1.1.jar          hamcrest-core-1.3.jar       plugin-rdbms-util-0.0.1-SNAPSHOT.jar
datax-common-0.0.1-SNAPSHOT.jar  logback-classic-1.0.13.jar  slf4j-api-1.7.10.jar
​

重新执行成功如下

[hadoop@node4 datax]$ python bin/datax.py job/stu.json
...
...
...
2024-06-28 00:30:48.367 [job-0] INFO  JobContainer - 
任务启动时刻                    : 2024-06-28 00:30:35
任务结束时刻                    : 2024-06-28 00:30:48
任务总计耗时                    :                 13s
任务平均流量                    :                1B/s
记录写入速度                    :              0rec/s
读出记录总数                    :                   2
读写失败总数                    :                   0
​

查看hdfs数据

[hadoop@node2 ~]$ hdfs dfs -cat /stu/* | zcat
2024-06-28 00:39:43,030 INFO sasl.SaslDataTransferClient: SASL encryption trust check: localHostTrusted = false, remoteHostTrusted = false
3   王五  21
4   赵六  22

同步HDFS数据到MySQL

要求:同步HDFS上的/stu目录下的数据到MySQL test数据库下的stu1表。

在MySQL中创建test.stu1表

create database if not exists test;
use test;
drop table if exists stu1;
create table stu1 like stu;

编写配置文件

(1)创建配置文件stu1.json

[hadoop@node4 ~$ vim ~/soft/datax/job/stu1.json

(2)配置文件内容如下

{
    "job": {
        "content": [
            {
                "reader": {
                    "name": "hdfsreader",
                    "parameter": {
                        "defaultFS": "hdfs://node2:9820",
                        "path": "/stu",
                        "column": [
                            "*"
                        ],
                        "fileType": "text",
                        "compress": "gzip",
                        "encoding": "UTF-8",
                        "nullFormat": "\\N",
                        "fieldDelimiter": "\t",
                    }
                },
                "writer": {
                    "name": "mysqlwriter",
                    "parameter": {
                        "username": "root",
                        "password": "000000",
                        "connection": [
                            {
                                "table": [
                                    "stu1"
                                ],
                                "jdbcUrl": "jdbc:mysql://node3:3306/test?useSSL=false&serverTimezone=Asia/Shanghai&useUnicode=true&allowPublicKeyRetrieval=true&characterEncoding=utf-8"
                            }
                        ],
                        "column": [
                            "id",
                            "name",
                            "age"
                        ],
                        "writeMode": "replace"
                    }
                }
            }
        ],
        "setting": {
            "speed": {
                "channel": 1
            }
        }
    }
}

执行同步数据任务

[atguigu@hadoop102 datax]$ cd ~/soft/datax
[atguigu@hadoop102 datax]$ python bin/datax.py job/stu1.json 

报错

2024-06-28 00:48:40.431 [job-0] ERROR RetryUtil - Exception when calling callable, 异常Msg:Code:[DBUtilErrorCode-10], Description:[连接数据库失败. 请检查您的 账号、密码、数据库名称、IP、Port或者向 DBA 寻求帮助(注意网络环境).].  -  具体错误信息为:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.
com.alibaba.datax.common.exception.DataXException: Code:[DBUtilErrorCode-10], Description:[连接数据库失败. 请检查您的 账号、密码、数据库名称、IP、Port或者向 DBA 寻求帮助(注意网络环境).].  -  具体错误信息为:com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server.
    at com.alibaba.datax.common.exception.DataXException.asDataXException(DataXException.java:26) ~[datax-common-0.0.1-SNAPSHOT.jar:na]
​

查看writer下的mysql驱动,发现也是mysql5的驱动mysql-connector-java-5.1.34.jar

[hadoop@node4 datax]$ ls plugin/writer/mysqlwriter/libs/
commons-collections-3.0.jar      druid-1.0.15.jar            logback-core-1.0.13.jar
commons-io-2.4.jar               fastjson-1.1.46.sec01.jar   mysql-connector-java-5.1.34.jar
commons-lang3-3.3.2.jar          guava-r05.jar               plugin-rdbms-util-0.0.1-SNAPSHOT.jar
commons-math3-3.1.1.jar          hamcrest-core-1.3.jar       slf4j-api-1.7.10.jar
datax-common-0.0.1-SNAPSHOT.jar  logback-classic-1.0.13.jar
​

复制mysql8的驱动到writer的libs目录,并重命名mysql5驱动

​
[hadoop@node4 datax]$ cp plugin/reader/mysqlreader/libs/mysql-connector-j-8.0.31.jar plugin/writer/mysqlwriter/libs/
​
[hadoop@node4 datax]$ mv plugin/writer/mysqlwriter/libs/mysql-connector-java-5.1.34.jar plugin/writer/mysqlwriter/libs/mysql-connector-java-5.1.34.jar.bak
​
[hadoop@node4 datax]$ ls plugin/writer/mysqlwriter/libs/
commons-collections-3.0.jar      druid-1.0.15.jar            logback-core-1.0.13.jar
commons-io-2.4.jar               fastjson-1.1.46.sec01.jar   mysql-connector-j-8.0.31.jar
commons-lang3-3.3.2.jar          guava-r05.jar               mysql-connector-java-5.1.34.jar.bak
commons-math3-3.1.1.jar          hamcrest-core-1.3.jar       plugin-rdbms-util-0.0.1-SNAPSHOT.jar
datax-common-0.0.1-SNAPSHOT.jar  logback-classic-1.0.13.jar  slf4j-api-1.7.10.jar
​

重新执行

[hadoop@node4 datax]$ python bin/datax.py job/stu1.json

DataX打印日志

2024-06-28 00:57:08.442 [job-0] INFO  JobContainer - 
任务启动时刻                    : 2024-06-28 00:56:55
任务结束时刻                    : 2024-06-28 00:57:08
任务总计耗时                    :                 12s
任务平均流量                    :                1B/s
记录写入速度                    :              0rec/s
读出记录总数                    :                   2
读写失败总数                    :                   0

查看node3 MySQL表stu1表数据,能看到从hdfs导入到mysql的数据。

mysql> select * from stu1;
+------+--------+------+
| id   | name   | age  |
+------+--------+------+
|    3 | 王五   |   21 |
|    4 | 赵六   |   22 |
+------+--------+------+
2 rows in set (0.00 sec)

导入导出到数据库时,注意修改reader和writer下的mysql驱动版本改为连接mysql所需要的驱动版本。

完成!enjoy it!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SAP PP学习笔记24 - 生产订单(制造指图)的创建

上面两章讲了生产订单的元素。 SAP PP学习笔记22 - 生产订单(制造指图)的元素1-CSDN博客 SAP PP学习笔记23 - 生产订单(制造指图)的元素2 - 决济规则(结算规则)-CSDN博客 这一章讲生产订单的创建。比如 - 生产订单的流程&#…

端口扫描攻击检测及防御方案

端口扫描数据一旦落入坏人之手,可能会成为更大规模恶意活动的一部分。因此,了解如何检测和防御端口扫描攻击至关重要。 端口扫描用于确定网络上的端口是否开放以接收来自其他设备的数据包,这有助于网络安全团队加强防御。但恶意行为者也可以…

ETAS工具导入DEXT生成Dcm及Dem模块(一)

文章目录 前言Cfggen之前的修改ECU关联DcmDslConnectionDiagnostic ProtocolDiagnostic Ecu Instance PropsCommonContributionSetEvent修改communication channel总结前言 诊断模块开发一般是先设计诊断数据库,OEM会释放对应的诊断数据库,如.odx文件或.cdd文件。如果OEM没有…

博士最多8年?硕士6年清退?教育局可没这么说!

哈哈哈,教育部可没说过博士最多八年,教育部说的是 博士研究生教育的最长修业年限,一般为6-8年 并且 对于“因研究未结束而无法正常毕业的博士”,目前高校可以按规定统筹利用科研经费、学费收入、社会捐助等资金,设…

使用minio搭建oss

文章目录 1.minio安装1.拉取镜像2.启动容器3.开启端口1.9090端口2.9000端口 4.访问1.网址http://:9090/ 5.创建一个桶 2.minio文件服务基本环境搭建1.创建一个文件模块2.目录结构3.配置依赖3.application.yml 配置4.编写配置类MinioConfig.java,构建minioClient5.Fi…

【Python】已解决:Python正确安装文字识别库EasyOCR

文章目录 一、分析问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决:Python正确安装文字识别库EasyOCR 一、分析问题背景 在使用Python进行图像处理和文字识别时,EasyOCR是一个流行的库,它基于PyTorch&…

一大波客户感谢信来袭,感谢认可!

“自美的置业数据中台项目启动以来,贵公司实施团队与服务运营始终以专业、敬业、合作的态度扎根用户、服务用户、与用户共成长。在此,我司表示由衷的感谢!” 这是携手美的置业以来,我们收到的第二封客户感谢信。 △ 以上为美的置…

Vue2组件传值(通信)的方式

1.父传后代 ( 后代拿到了父的数据 ) 1. 父组件引入子组件&#xff0c;绑定数据 <List :str1‘str1’></List> 子组件通过props来接收props:{str1:{type:String,default:}}***这种方式父传子很方便&#xff0c;但是父传给孙子辈分的组件就很麻烦&#xff08;父》子…

PerplexityAI与《连线》杂志纠纷事件深度分析

引言 最近&#xff0c;PerplexityAI&#xff0c;这家人工智能搜索领域的新秀公司&#xff0c;因被《连线》杂志指控剽窃内容和捏造事实而陷入困境。这起事件引发了广泛关注&#xff0c;也揭示了AI技术在信息检索和内容生成领域面临的一系列挑战。本文将对该事件进行详细分析&a…

《昇思25天学习打卡营第5天|onereal》

ShuffleNet网络介绍 ShuffleNetV1是旷视科技提出的一种计算高效的CNN模型&#xff0c;和MobileNet, SqueezeNet等一样主要应用在移动端&#xff0c;所以模型的设计目标就是利用有限的计算资源来达到最好的模型精度。ShuffleNetV1的设计核心是引入了两种操作&#xff1a;Pointw…

KVB外汇:澳元/美元、澳元/纽元、英镑/澳元的走势如何?

摘要 本文对近期澳元/美元、澳元/纽元、英镑/澳元的技术走势进行了详细分析。通过对关键支撑位和阻力位的分析&#xff0c;我们可以更好地理解澳元在不同货币对中的表现。随着全球经济形势的变化&#xff0c;各国央行的货币政策对外汇市场的影响也愈发明显。本文旨在帮助投资者…

centos7+离线安装nginx

1.提取rpm包 链接&#xff1a;https://pan.baidu.com/s/1qLNPubAD_qt59Pzws4nnog 提取码&#xff1a;0124 --来自百度网盘超级会员V3的分享 2.安装流程 rpm -ivh nginx-1.20.1-1.el7.ngx.x86_64.rpm 在使用 nginx 时&#xff0c;通常需要掌握一些基本的命令来管理其启动、查…

新能源行业必会基础知识-----电力市场概论笔记-----经济学基础

新能源行业知识体系-------主目录-----持续更新(进不去说明我没写完)&#xff1a;https://blog.csdn.net/grd_java/article/details/139946830 目录 1. 什么是市场2. 电力市场机制设计的基本要求 1. 什么是市场 经济学定义 市场是供需双方交易并决定商品价格和产量的机制市场可…

新学期必备,录取情况统计如何制作?

暑假即将开始&#xff0c;新学期离我们又近了一步&#xff0c;老师们是不是在为如何高效统计录取情况而头疼呢&#xff1f;别担心&#xff0c;分享一个超实用的小技巧——使用易查分小程序的新建填表功能&#xff0c;让你的录取统计工作变得简单又高效&#xff01; 打开易查分小…

汇总大语言模型LLM的评测基准数据集(BenchMarks)

文章目录 0. 引言1. 知识与语言理解1.1 MMLU1.2 ARC1.3 GLUE1.4 Natural Questions1.5 LAMBADA1.5 HellaSwag1.6 MultiNLI1.7 SuperGLUE1.8 TriviaQA1.9 WinoGrande1.10 SciQ 2. 推理能力2.1 GSM8K2.2 DROP2.3 CRASS2.4 RACE2.5 BBH2.6 AGIEval2.7 BoolQ 3. 多轮开放式对话3.1 …

一文弄懂梯度下降算法

1、引言 在上一篇文章中&#xff0c;我们介绍了如何使用线性回归和成本损失函数为房价数据找到最拟合的线。不过&#xff0c;我们也看到&#xff0c;测试多个截距值可能既繁琐又低效。在本文中&#xff0c;我们将深入探讨梯度下降算法&#xff0c;这是一种更加强大的技术&…

three.js场景三元素

three.js是一个基于WebGL的轻量级、易于使用的3D库。它极大地简化了WebGL的复杂细节&#xff0c;降低了学习成本&#xff0c;同时提高了性能。 three.js的三大核心元素&#xff1a; 场景&#xff08;Scene&#xff09; 场景是一个三维空间&#xff0c;是所有物品的容器。可以将…

桌面提醒工具哪个好?简单好用的便签提醒app推荐

在日常的生活和工作中&#xff0c;我们经常会遇到各种各样的事情&#xff0c;有时候可能会遗忘一些重要的事情。这个时候&#xff0c;一个简单好用的便签提醒工具就显得尤为重要了。那么&#xff0c;哪款桌面提醒工具比较好用呢&#xff1f;下面&#xff0c;就为大家推荐一款我…

新手教程系列 -- SQLAlchemy对同一张表联表两次

在开发过程中,我们经常会遇到对同一张表进行多次联表查询的需求。比如在查询航线时,我们希望将起飞和降落的机场名称代入结果中。为了实现这一目标,机场名称统一存放在 AirPort 表中。下面,我们将介绍如何通过 SQLAlchemy 实现这一需求。 问题描述 一般情况我们第一时间会…

AI 激发算力需求暴增,施耐德电气解码智算中心发展

随着全球碳达峰目标的持续推进&#xff0c;各行各业都在加速绿色转型的步伐&#xff0c;尤其是高耗能产业更是备受关注。人工智能行业以其迅猛的发展速度令人瞩目&#xff0c;它所带来的不仅是算力需求的飙升&#xff0c;更是日益凸显的能耗问题。 目前&#xff0c;人工智能预…