基于Flink CDC实现实时数据采集(三)-Function接口实现
为了统一sink的输入格式,在Source输出后做了一个统一Function处理,输出的数据格式为RowData,目前针对mysql、oracle、kafka三种数据源分别完成了三种实现类
MysqlFunction
/**
* @author xiaohf7
* @date 2022/4/12 16:58
* @Description mysql binlog 的数据源转换
*/
public class MysqlFunction extends BaseFunction{
@Override
public void specialTypeMap(int index, GenericRowData rowData, LogicalType type, JSONObject jsonValue, String key) {
Class<?> conversion = type.getDefaultConversion();
if (conversion == LocalDate.class) {
Long timeLong = jsonValue.getLong(key);
if (timeLong != null) {
rowData.setField(index, timeLong * 24 * 3600 * 1000);
}else {
rowData.setField(index, null);
}
} else if (conversion == LocalDateTime.class) {
Timestamp timestamp = jsonValue.