美文网首页
DataX初体验-python命令启动以及纯java启动

DataX初体验-python命令启动以及纯java启动

作者: me0w | 来源:发表于2018-09-18 16:11 被阅读648次

一、DataX安装

官网描述很详细,很简单---->DataX安装

二、使用示例:从Oracle数据库导数据到Mysql数据库

事先准备:

Oracle数据库的ORDER_INFO表,MySQL数据库的order_info表,表结构相同

2.1使用Python启动
  • 生成模板文件
    打开安装目录的bin,使用命令python datax.py -r {YOUR_READER} -w {YOUR_WRITER}生成模板文件,由于我是要从Oracle读数据到MySQL,所以我的生成模板命令如下:(DataX支持的reader和writer )
$ cd {YOUR_DATAX_DIR_BIN}
$ python datax.py -r oraclereader -w mysqlwriter
  • 根据生成的模板文件,填充自己的json文件
    我按照实际情况填充后如下:
{
    "job": {
        "content": [
            {
                "reader": {
                    "name": "oraclereader",
                    "parameter": {
                        "column": ["*"],
                        "connection": [
                            {
                                "jdbcUrl": ["jdbc:oracle:thin:@192.168.123.34:1521:ocm"],
                                "table": ["ORDER_INFO"]
                            }
                        ],
                        "password": "admin",
                        "username": "***"
                    }
                },
                "writer": {
                    "name": "mysqlwriter",
                    "parameter": {
                        "column": ["*"],
                        "connection": [
                            {
                                "jdbcUrl": "jdbc:mysql://192.168.211.56:3306/test_datax?characterEncoding=utf8",
                                "table": ["order_info"]
                            }
                        ],
                        "password": "datax01",
                        "preSql": [],
                        "session": [],
                        "username": "datax01",
                        "writeMode": "insert"
                    }
                }
            }
        ],
        "setting": {
            "speed": {
                "channel": "5"
            }
        }
    }
}

保存为oracle2mysql.json文件于{YOUR_DATAX_DIR_BIN}目录

  • 启动DataX,开始传输
$ cd {YOUR_DATAX_DIR_BIN}
$ python datax.py ./oracle2mysql.json 

同步结束,显示如下日志:


2018-09-18 14:31:15.200 [job-0] INFO  JobContainer -
任务启动时刻                    : 2018-09-18 14:31:02
任务结束时刻                    : 2018-09-18 14:31:15
任务总计耗时                    :                 12s
任务平均流量                    :          228.64KB/s
记录写入速度                    :            495rec/s
读出记录总数                    :                4953
读写失败总数                    :                   0
2.2使用Java启动

github上将DataX的源码clone到本地,DataX的入口类是core包下面的alibaba.datax.core.Engine.main()方法。
根据datax.py文件的以下几行配置项目的参数

DEFAULT_JVM = "-Xms1g -Xmx1g -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=%s/log" % (DATAX_HOME)
DEFAULT_PROPERTY_CONF = "-Dfile.encoding=UTF-8 -Dlogback.statusListenerClass=ch.qos.logback.core.status.NopStatusListener -Djava.security.egd=file:///dev/urandom -Ddatax.home=%s -Dlogback.configurationFile=%s" % (
    DATAX_HOME, LOGBACK_FILE)
ENGINE_COMMAND = "java -server ${jvm} %s -classpath %s  ${params} com.alibaba.datax.core.Engine -mode ${mode} -jobid ${jobid} -job ${job}" % (
    DEFAULT_PROPERTY_CONF, CLASS_PATH)
  • 配置JVM参数如下
    -Xms1g -Xmx1g -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath={DATAX_HOME}/log

  • 配置环境变量
    -Dfile.encoding=UTF-8 -Dlogback.statusListenerClass=ch.qos.logback.core.status.NopStatusListener -Djava.security.egd=file:///dev/urandom -Ddatax.home=%s -Dlogback.configurationFile=%s"
    去掉-D,配置在

    image.png
  • 配置启动项
    从Engine类的第124行到126行可以看出,启动项需要配置三个参数:mode、jobid和job,jobid如果不配置的话默认为-1,但是只有mode是standalone模式时,jobid才能取-1的值,job配置了json文件位置

        options.addOption("job", true, "Job config.");
        options.addOption("jobid", true, "Job unique id.");
        options.addOption("mode", true, "Job runtime mode.");

以我的情况为例:
-mode standalone -jobid -1 -job \...\oracle2mysql.json

  • 启动java项目
    直接在idea里面运行项目,控制台最后输出一下日志:
15:21:08.806 [job-0] INFO  c.a.datax.core.job.JobContainer - 
任务启动时刻                    : 2018-09-18 15:20:36
任务结束时刻                    : 2018-09-18 15:21:08
任务总计耗时                    :                 31s
任务平均流量                    :           76.27KB/s
记录写入速度                    :            165rec/s
读出记录总数                    :                4956
读写失败总数                    :                   0

相关文章

  • DataX初体验-python命令启动以及纯java启动

    一、DataX安装 官网描述很详细,很简单---->DataX安装 二、使用示例:从Oracle数据库导数据到My...

  • 【Linux系统管理7】

    Python中执行外部命令 Python可以通过subprocess模块来执行Linux shell命令以及启动子...

  • Linux命令

    CentOS7 防火墙命令 JAVA启动命令 解压命令 开机启动

  • datax梳理

    一、启动执行python datax.py {job.json}python需要2.7版本(Linux环境下自带无...

  • 开发常用命令

    命令行启动服务 命令行启动activity 命令行发送广播 monkey启动应用 java打堆栈

  • Java8 JVM参数解读

    摘要:我们知道java虚拟机启动时会带有很多的启动参数,Java命令本身就是一个多参数的启动命令。那么具体JVM启...

  • Elasticsearch源码分析-启动过程浅析

    1、启动命令及启动类 首先,来看一下启动elasticsearch的Java命令,其中es.pidfile是pid...

  • java启动时JVM参数分析

    java启动命令 执行类:java [-options] class [args…] 执行jar文件:java [...

  • pycharm+django搭建第一个web项目

    初步启动 1、启动django项目使之可以外网访问(1)使用命令启动:python manage.py runse...

  • datax启动流程

    组件 Reader:Reader为数据采集模块,负责采集数据源的数据,将数据发送给Framework。 Write...

网友评论

      本文标题:DataX初体验-python命令启动以及纯java启动

      本文链接:https://www.haomeiwen.com/subject/mlaynftx.html