apache / flink-cdc

Flink CDC is a streaming data integration tool
https://nightlies.apache.org/flink/flink-cdc-docs-stable
Apache License 2.0
5.76k stars 1.95k forks source link

不同节点Mysql表join,丢失数据且自动删除NULL数据? #206

Closed 812406210 closed 3 years ago

812406210 commented 3 years ago

你好,请教下,我这边用了两个mysql节点的数据进行join表,发现启动后会拉取数据,但是不全,等数据有更新之后,数据就会自动删除带NULL的数据,剩下没有都是没有NULL的数据了,这个怎么处理?

leonardBang commented 3 years ago

数据就会自动删除带NULL的数据,剩下没有都是没有NULL的数据

可以描述具体点,没理解你的问题。。。可以贴下具体的数据和SQL

812406210 commented 3 years ago

数据就会自动删除带NULL的数据,剩下没有都是没有NULL的数据

可以描述具体点,没理解你的问题。。。可以贴下具体的数据和SQL

谢啦,我发送到Kafka看到原因了,写DataStream去处理了,但是不理解的是,flinkcdc 应该是全量拿取的,尽管有-D的操作,但是数据表里面有的数据,为啥也-D干掉了。。。。 代码: ` val createTRefundRequest = s""" |CREATE TABLE t_refund_request ( | id INT, | stu_id INT, | stu_name STRING, | order_no STRING, | schedule_time TIMESTAMP(3), | biz_type STRING , | refund_status STRING, | create_time TIMESTAMP(3), | refund_amount DECIMAL(10,2), | retention_id INT |) WITH ( | 'connector' = 'mysql-cdc', | 'hostname' = 'xxxx', | 'port' = '3306', | 'username' = 'root', | 'password' = 'xxxx', | 'database-name' = 'epay', | 'table-name' = 'xxxx', | 'debezium.snapshot.mode' = '${debeziumSnapshotMode}', | 'debezium.snapshot.locking.mode' = 'none' |) """.stripMargin

    val createDragOrder =
  s"""
    |CREATE TABLE drag_order (
    |    morder_no STRING,
    |    mobile STRING,
    |    business_id INT
    |) WITH (
    |    'connector' = 'mysql-cdc',
    |    'hostname' = 'xxx',
    |    'port' = '3306',
    |    'username' = 'root',
    |    'password' = 'xxxx',
    |    'database-name' = 'dragnet',
    |    'table-name' = 'xxxx',
    |    'debezium.snapshot.mode' = '${debeziumSnapshotMode}',
    |    'debezium.snapshot.locking.mode' = 'none'
    |)
""".stripMargin`

就是这两个表join。job刚启动完成后,sink数据量和t_refund_request 数据一样多,但是当t_refund_request 有新数据的时候,就有很多-D的数据过来了,然后sink的数据就只有全字段没有null的数据了,存在null的数据就全部-D删了,不知道为啥

leonardBang commented 3 years ago

你使用的双流join还是维表join, 双流join是会有撤回的。

812406210 commented 3 years ago

你使用的双流join还是维表join, 双流join是会有撤回的。

哦哦。。。我这边是双流join,所以我发送kafka,然后用datastream去过滤掉op=-D得操作,不让它撤回,只进行+I,就可以了,数据也是正常得,哈哈 。 请问如果是维表得join,是不会有-D撤回吗?如果双流join,只要有指标表就会有-D撤回操作吗?