首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何保证debezium生成的topic事件顺序,存储在kafka中并发送给spark?

问如何保证debezium生成的topic事件顺序,存储在kafka中并发送给spark?
EN

Stack Overflow用户
提问于 2019-05-03 05:48:25
回答 1查看 694关注 0票数 0

我在一个变更数据捕获项目中工作。我有一个mysql数据库。我使用debezium捕获所有更改并将其发送给kafka。后来,我读取了Spark的所有信息,并使用jdbc将其发送到Apache Phoenix。

我正在使用debezium和一个重路由选项,它只将所有表的更改发送到一个kafka主题。有了这个配置,我确信我可以按顺序阅读spark中独特的kafka主题。

但我的问题是:如果我使用debezium而没有重新路由选项,并且我在不同的kafka主题中有每个表的更改,我如何保证我以正确的顺序读取所有主题的事件?

我知道我可以使用Spark来排序,例如按时间戳排序,但是如果比如说,一个kafka主题脱机10分钟,因为出现了问题,但其他kafka主题继续工作,我将在Spark中遇到排序问题。

我该如何面对这个问题?

EN

回答 1

Stack Overflow用户

发布于 2019-12-11 03:22:39

我在Debezium上用这个配置解决了这个问题

代码语言:javascript
复制
{
"name": "name-connector",
"config": {
    "plugin.name": "pgoutput",
    "connector.class": "io.debezium.connector.postgresql.PostgresConnector",
    "database.hostname": "0.0.0.0",
    "database.port": "5433",
    "database.user": "postgres",
    "database.password": "******",
    "database.dbname" : "database",
    "database.server.name": "database",
    "database.history.kafka.bootstrap.servers": "kafka:9092",
    "database.history.kafka.topic": "schema-changes.database",
    "decimal.handling.mode" : "string",
    "time.precision.mode" : "connect",
    "tombstones.on.delete" : false,
    "transforms":"routerTopic",
    "transforms.routerTopic.type":"io.debezium.transforms.ByLogicalTableRouter",
    "transforms.routerTopic.topic.regex":"database.public.(.*)",
    "transforms.routerTopic.topic.replacement":"database.public",
}
}

使用transforms.routerTopic.topic.regex和transforms.routerTopic.topic.replacement配置主题路由

https://debezium.io/documentation/reference/0.10/configuration/topic-routing.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55960692

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档