DataX自定义transformer编写指南

DataX自定义transformer编写指南

用于数据加密

  • jave开发环境
  • maven
  • Python 2.*

概述

DataX 是阿里巴巴集团内被广泛使用的离线数据同步工具/平台,实现包括 MySQL、Oracle、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、DRDS 等各种异构数据源之间高效的数据同步功能。借助于DataX可以实现将数据库中的数据进行脱敏操作并以任意支持类型存储于数据库或者数据平台中。

DataX作为一个框架,本身提供了writer和reader插件的自定义方法,参考已有的方法即可支撑更多类型的数据读取和存储。然而想要在数据迁移过程中实现数据脱敏,则更适合去继承设计实现一个特定的 transformer,让数据在传输过程中自然地完成数据转换。

DataX本身提供了几个transformer用于数据处理,仅需修改 job 配置文件,就能实现简单的字符串修齐和替换处理。但对于更多类型的数据实现更为复杂的加密却无能为力。这里以自身经历为例,记录一下我的transformer开发过程。

过程概述

1.从 Github 上 clone DataX 项目源码到本地,在根目录下找到 transformer 文件夹;
2.在 com.alibaba.datax.transport.transformer 路径下找到transformer, 继承 Transformer 并参考已有的transformer类实现接口,按你的需求接收参数,用于从 job 配置文件接收命令;

public class MaskTransformer extends  Transformer{
    public  MaskTransformer(){ setTransformerName("dx_masker");};

    @Override
    public Record evaluate(Record record, Object... paras)

3.在 core\src\main\java\com\alibaba\datax\core\transport\transformer 目录的 TransformerRegistry 类中注册你编写的 transformer 类;

public class TransformerRegistry {

    private static final Logger LOG = LoggerFactory.getLogger(TransformerRegistry.class);
    private static Map registedTransformer = new HashMap();

    static {
        /**
         * add native transformer
         * local storage and from server will be delay load.
         */

        registTransformer(new SubstrTransformer());
        registTransformer(new PadTransformer());
        registTransformer(new ReplaceTransformer());
        registTransformer(new FilterTransformer());
        registTransformer(new GroovyTransformer());
        registTransformer(new MaskTransformer()); //在这里注册刚刚编写的transformer
    }
  1. mvn打包编译,调试。
mvn clean package -DskipTests assembly:assembly

更先进的方法请参考DIY-DataX-Transformer

你可能感兴趣的:(4,-,Engineering)