Groovy自定义转换插件实现了自定义编写Groovy代码,将每个record在同步过程中进行相应转换的需求。

例如将某个字段的值大写全部转小写、将所有字段的值加一个前缀或后缀,或者将JSON字段根据需要解析出若干属性到其它的字段等,都可以通过Groovy自定义转换插件实现。

实现原理

Groovy自定义转换插件通过Groovy编译器编译执行您配置的Groovy代码,代码需要继承com.alibaba.di.plugin.center.transformer.Transformer类,并且实现Record evaluate(Record record)方法。

新建Groovy

  1. 登录DataWorks控制台,单击相应工作空间后的进入数据开发
  2. 鼠标悬停至新建,单击数据集成 > 实时同步

    您也可以找到相应的业务流程,右键单击数据集成,选择新建 > 实时同步

  3. 新建节点对话框中,输入节点名称,并选择目标文件夹,单击提交
  4. 在实时同步节点的编辑页面,鼠标单击转换 > Groovy并拖拽至编辑面板,连线已配置好的输入节点。
  5. 单击Groovy节点,填写节点配置对话框中的参数。转换
    • 节点配置
      Groovy代码:以配置一个实时读取MySQL数据至DataHub,并经过转换为第一个字段加上GROOVY后缀为例,输入以下代码。
      import com.alibaba.di.plugin.center.element.Column;
      import com.alibaba.di.plugin.center.element.StringColumn;
      import com.alibaba.di.plugin.center.record.Record;
      import com.alibaba.di.plugin.center.transformer.Transformer;
      
      class MyTransformer extends Transformer {
          @Override
          public Record evaluate(Record record) {
              Column column = record.getColumn(0);
              String newValue = column.asString() + "GROOVY";
              record.setColumn(0, new StringColumn(newValue));
              return record;
          }
      }
    • 输出字段

      上游节点的输出字段作为当前节点的输入。

    • 自定义字段

      通过自定义转换插件转换后,该Groovy节点最终的输出字段。

  6. 单击工具栏中的保存