otter 自定义扩展添加字段不生效

ngynwnxp  于 2022-11-02  发布在  其他
关注(0)|答案(4)|浏览(192)

otter同步时,自定义扩展,添加字段,插入的目标表中的数据,对应的新字段没有数据,
自定义实现如下:
public class TestEventProcessor extends AbstractEventProcessor {

public boolean process(EventData eventData) {
 boolean isHandle = true;
 if (eventData == null)
     return isHandle;
 EventColumn c = new EventColumn();
 /*c.setColumnName("update_time");
 c.setColumnType(Types.DATE);
 c.setColumnValue("2019-03-05 00:00:00");*/
 c.setColumnName("mark");
 c.setColumnType(Types.VARCHAR);
 c.setColumnValue("fafasfdsaf");
 c.setUpdate(true);
 eventData.getColumns().add(c);
 List<EventColumn> cols = eventData.getColumns();
 cols.add(c);
 eventData.setColumns(cols);
return isHandle;

}
}

EventProcessor类型:选择的是source
otter版本:4.2.17

请问,可能原因是什么?谢谢!!!

gc0ot86w

gc0ot86w1#

新字段需要在Map关系表中定义(源、目标表中都需要配置),ViewExtractor.java 中有过滤
如果新字段源表没有,目标表有,需要扩展下 ViewExtractor

f4t66c6m

f4t66c6m2#

新字段需要在Map关系表中定义(源、目标表中都需要配置),ViewExtractor.java 中有过滤
如果新字段源表没有,目标表有,需要扩展下 ViewExtractor

ViewExtractor.java这个没找到是在哪定义的。
public boolean process(EventData eventData) {
// 构造新的字段
EventColumn schema = new EventColumn();
schema.setColumnValue(sdf.format(new Date(eventData.getExecuteTime())));
schema.setColumnType(Types.DATE);
schema.setColumnName("opt_time");
// 替换为新的字段
eventData.getColumns().add(schema);
return true;
}
我这样写,可以了。目标表中没有opt_time字段。

ocebsuys

ocebsuys3#

otter的自定义Map到底该怎么做,可以仔细说一下流程吗,官方说明有一些细节感觉没有说到
想自定义Map是不是先下载otter的源码,然后在源码中把代码写好以后,再把代码复制到EventProcessor文本中,就可以了

nue99wik

nue99wik4#

新字段需要在Map关系表中定义(源、目标表中都需要配置),ViewExtractor.java 中有过滤
如果新字段源表没有,目标表有,需要扩展下 ViewExtractor

ViewExtractor.java这个没找到是在哪定义的。
public boolean process(EventData eventData) {
// 构造新的字段
EventColumn schema = new EventColumn();
schema.setColumnValue(sdf.format(new Date(eventData.getExecuteTime())));
schema.setColumnType(Types.DATE);
schema.setColumnName("opt_time");
// 替换为新的字段
eventData.getColumns().add(schema);
return true;
}
我这样写,可以了。目标表中没有opt_time字段。

我也是在processor里面new了一个新的column,但是什么都没有发生

相关问题