利用flink cdc将业务数据库到ods(kafka) (1)主要代码
package com.yyds.app.ods;import com.alibaba.ververica.cdc.connectors.mysql.MySQLSource;import com.alibaba.ververica.cdc.connectors.mysql.table.StartupOptions;import com.alibaba.ververica.cdc.debezium.DebeziumSourceFunction;import com.yyds.app.function.MyDeserialization;import com.yyds.utils.MyKafkaUtils;import org.apache.flink.runtime.state.filesystem.FsStateBackend;import org.apache.flink.streaming.api.CheckpointingMode;import org.apache.flink.streaming.api.datastream.DataStreamSource;import org.apache.flink.streaming.api.environment.CheckpointConfig;import org.apache.flink.streaming.api.environment.StreamExecutionEnvironment;public class FlinkCDC {public static void main(String[] args) throws Exception {System.setProperty("HADOOP_USER_NAME","root");// 1、获取执行环境StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();env.setParallelism(1);// 开启 Checkpoint,每隔 5 秒钟做一次 Checkpointenv.enableCheckpointing(5000L);//指定 CK 的一致性语义env.getCheckpointConfig().setCheckpointingMode(CheckpointingMode.EXACTLY_ONCE);// 设置超时时间//env.getCheckpointConfig().setAlignmentTimeout(10000L);env.getCheckpointConfig().setMaxConcurrentCheckpoints(2);env.getCheckpointConfig().setMinPauseBetweenCheckpoints(3000L);// 重启策略//env.setRestartStrategy(RestartStrategies.fixedDelayRestart(3,5000L));//设置任务关闭的时候保留最后一次 CK 数据env.getCheckpointConfig().enableExternalizedCheckpoints(CheckpointConfig.ExternalizedCheckpointCleanup.RETAIN_ON_CANCELLATION);// 设置状态后端env.setStateBackend(new FsStateBackend("hdfs://centos01:8020/flinkCDC/ck"));// 2、通过cdc构建SourceFunction并且读取数据DebeziumSourceFunction (2)自定义反序列化器
package com.yyds.app.function;import com.alibaba.fastjson.JSONObject;import com.alibaba.ververica.cdc.debezium.DebeziumDeserializationSchema;import io.debezium.data.Envelope;import org.apache.flink.api.common.typeinfo.BasicTypeInfo;import org.apache.flink.api.common.typeinfo.TypeInformation;import org.apache.flink.util.Collector;import org.apache.kafka.connect.data.Field;import org.apache.kafka.connect.data.Schema;import org.apache.kafka.connect.data.Struct;import org.apache.kafka.connect.source.SourceRecord;import java.util.List;/** * 自定义序列化器 */public class MyDeserialization implements DebeziumDeserializationSchema (3)工具类
【kafka 二 实时数仓业务数据库到ods】package com.yyds.utils;import org.apache.flink.api.common.serialization.SimpleStringSchema;import org.apache.flink.streaming.connectors.kafka.FlinkKafkaConsumer;import org.apache.flink.streaming.connectors.kafka.FlinkKafkaProducer;import org.apache.kafka.clients.consumer.ConsumerConfig;import java.util.Properties;public class MyKafkaUtils {private static String brokers = "centos01:9092,centos02:9092,centos03:9092";public static FlinkKafkaProducer
- 春季老年人吃什么养肝?土豆、米饭换着吃
- 三八妇女节节日祝福分享 三八妇女节节日语录
- 老人谨慎!选好你的“第三只脚”
- 校方进行了深刻的反思 青岛一大学生坠亡校方整改校规
- 脸皮厚的人长寿!有这特征的老人最长寿
- 长寿秘诀:记住这10大妙招 100%增寿
- 春季老年人心血管病高发 3条保命要诀
- 眼睛花不花要看四十八 老年人怎样延缓老花眼
- 香槟然能防治老年痴呆症? 一天三杯它人到90不痴呆
- 老人手抖的原因 为什么老人手会抖
