TASKCTL 对开源项目DataX和Sqoop等ETL工具的支撑
博客专区 > 米叔 的博客 > 博客详情
TASKCTL 对开源项目DataX和Sqoop等ETL工具的支撑
米叔 发表于3个月前
TASKCTL 对开源项目DataX和Sqoop等ETL工具的支撑
  • 发表于 3个月前
  • 阅读 96
  • 收藏 0
  • 点赞 1
  • 评论 0

1、阿里开源软件:DataX

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

2、Apache开源软件:Sqoop

Sqoop(发音:skup)是一款开源的工具,主要用于在HADOOP(Hive)与传统的数据库(mysql、postgresql...)间进行数据的传递,可以将一个关系型数据库(例如 : MySQL ,Oracle ,Postgres等)中的数据导进到Hadoop的HDFS中,也可以将HDFS的数据导进到关系型数据库中。

TASKCTL采用任务插件机制,以适配不同类型的任务,采用TASKCTL任务插件调度作业,具有统一的操作命令,统一的监控方式,统一的运维方式。下面以调度DataX作业类型为例:

$ cd {YOUR_DATAX_DIR_BIN}
$ python datax.py ./mysql2odps.json

我们可以看到调用datax,实际上是调用python脚本。

因此我们可以直接在taskctl中配置作业的xml片段如下:

  <python>
    <name>datax_job</name>
    <progname>datax.py</progname>   -- 此处有可能需要定位到cd {YOUR_DATAX_DIR_BIN}
    <para>./mysql2odps.json</para>
  </python>

 

当然,如果要使datax作业类型看起来更加个性化点(或者在插件中适配点什么)。我们还可以datax配置单独的任务插件,步骤如下:

1、编写调用datax的脚本文件cprundataxjob.sh:

#!bin/bash
 
if [ $# -ne 3 ]
then
    echo "Param error !"
    echo "Usage: $0 progname para expara"
    exit 126
fi
 
#------------------------------------------------------------------------------
#      第一步: 接收参数
#------------------------------------------------------------------------------ 
ProgName=$1
Para=$2
ExpPara=$3
 
#------------------------------------------------------------------------------
#      第二步: 运行JOB,并等待结果
#------------------------------------------------------------------------------ 
#cd {YOUR_DATAX_DIR_BIN}    --相当于TASKCTL中的exppara环境参数
cd ${ExpPara}
 
#python datax.py ./mysql2odps.json
python datax.py ${ProgName}
 
#收集datax.py执行结果
retinfo=$?
 
#------------------------------------------------------------------------------
#      第四步: 插件返回
#------------------------------------------------------------------------------ 
 
#根据retinfo的信息,返回给TASKCTL
 
if [ ${retinfo} -eq 0 ]
then
    echo ""
    echo "Run job success !"
else
    echo ""
    echo "Run job failed !" 
fi
exit ${retinfo}

配置后,把cprundataxjob.sh放到TASKCTL服务端的$TASKCTLDIR/src/plugin/dataxjob/shell/目录下

2、在TASKCTL桌面软件admin中配置插件如下图:

3、在designer中编写模块代码如下:

<dataxjob>
    <name>MainModul_JobNode0</name>
    <progname>./mysql2odps.json</progname>
    <exppara>[你的datax安装路径]</exppara>
  </dataxjob>

4、完成模块代码的编写后,如下:

 

标签: DataX Spoon ETL
共有 人打赏支持
粉丝 3
博文 4
码字总数 2994
×
米叔
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: