flink-SQL变更日志打印

该代码示例展示了如何在Flink1.15.4中使用SQL处理MongoDB的变更数据捕获(CDC)。通过创建数据源表并定义MongoDB连接器,程序从MongoDB的t_article_source集合读取变更事件,并将其打印到控制台。日志配置文件(log4j2.xml)设定了日志输出级别为INFO,用于记录操作日志。
摘要由CSDN通过智能技术生成

flink-SQL变更日志打印

基于flink-1.15.4

很多时候会进行 SQL 变量调试

public class MongoDbEmbededPrinterCdc {


    /**
     * flink-cdc-mongo https://ververica.github.io/flink-cdc-connectors/master/content/connectors/mongodb-cdc.html#data-type-mapping
     * https://github.com/ververica/flink-cdc-connectors/blob/master/docs/content/connectors/mongodb-cdc(ZH).md
     * @param args
     * @throws Exception
     */
    public static void main(String[] args) throws Exception {

        StreamExecutionEnvironment env = StreamExecutionEnvironment.getExecutionEnvironment();
        StreamTableEnvironment tableEnv = StreamTableEnvironment.create(env);
        // 数据源表
        String sourceDDL =
               "CREATE TABLE `t_article_source` (\n" +
                "  `_id` STRING,\n" +
                "  `articleId` INT,\n" +
                "  `title` STRING,\n" +
                "  `tags` ARRAY<String>,\n"+
                "  `authors` ARRAY<ROW<name STRING, address STRING>>,\n"+
                "  PRIMARY KEY (`_id`) NOT ENFORCED\n" + //mongo 主键 Primary key must be _id field
                ") WITH (\n" +
                        " 'connector' = 'mongodb-cdc',\n" +
                        " 'hosts' = '172.1x.0.xx:27017',\n" + //多个 host
                        " 'username' = 'flinkuser',\n" +
                        " 'password' = 'flinkpw',\n" +
                        " 'database' = 'test',\n" +
                        " 'collection' = 't_article_source'\n" +
                        ")";
        
        tableEnv.executeSql(sourceDDL);
        Table table = tableEnv.from("t_article_source");
        tableEnv.toChangelogStream(table).print("mongo");
        env.execute("abc");
    }

}

log4j2.xml 日志:

<?xml version="1.0" encoding="UTF-8"?>
<configuration monitorInterval="5">
    <Properties>
        <property name="LOG_PATTERN" value="%date{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n"/>
        <!-- LOG_LEVEL 配置你需要的日志输出级别       -->
        <property name="LOG_LEVEL" value="INFO"/>
    </Properties>

    <appenders>
        <console name="Console" target="SYSTEM_OUT">
            <PatternLayout pattern="${LOG_PATTERN}"/>
            <ThresholdFilter level="${LOG_LEVEL}" onMatch="ACCEPT" onMismatch="DENY"/>
        </console>
    </appenders>

    <loggers>
        <root level="${LOG_LEVEL}">
            <appender-ref ref="Console"/>
        </root>
    </loggers>

</configuration>

输出:

mongo:14> +I[649d6ed7084687af5e575091, 3, 小马过河2, [玄幻, 修真2], [+I[张三2, 上海2]]]
mongo:9> -U[649cea151df115e06dd24990, 1, 标1题3, [玄幻, 修真2], [+I[张三2, 上海2]]]
mongo:9> +U[649cea151df115e06dd24990, 1, 标1题31, [玄幻, 修真2], [+I[张三2, 上海2]]]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值