当前位置: 首页 > 知识库问答 >
问题:

无法在 debezium 连接器上生成过滤器,并显示错误:“op 不是有效的字段名称”

诸葛砚
2023-03-14

我创建了一个debezium连接器到docker MySQL容器。我尝试为消息设置过滤器:

    {
        "name": "my_connector",
        "config": {
            "name": "my_connector",
            "connector.class": "io.debezium.connector.mysql.MySqlConnector",
            
            ...
            
            "include.schema.changes": "true",
            "transforms": "filter, unwrap",
            "transforms.unwrap.type": "io.debezium.transforms.ExtractNewRecordState",
            "transforms.unwrap.drop.tombstones": "true",
            "transforms.filter.type": "io.debezium.transforms.Filter",
            "transforms.filter.language": "jsr223.groovy",
            "transforms.filter.condition": "value.source.table == 'table-name' && (value.op == 'd' || value.op == 'c' || (value.op == 'u' && value.after.status != value.before.status))"
        }
    }

在 http://localhost:8070/connectors/my_connector/status 我看到这个:

{ "connector": { "state": "RUNNING "," worker_id": "172.21.0.13:8083" }," name": "my_connector "," tasks": [ { "id": 0," state": "FAILED "," trace ":" org . Apache . Kafka . connect . errors . connect异常:错误处理程序中超出了容差\ n \ tat org . Apache . Kafka . connect . runtime . errors . retrywithtoleranceoperator . exechandleerror(retrywithtoleranceoperator .

正如OneCricketeer指出的那样,这里的基本问题是:

原因:javax.script。脚本异常:org.apache.cafka.connect.errors。DataException:op不是有效的字段名\n\t

但我不确定使用它有什么问题,因为它似乎应该是一个有效字段——这里。

共有1个答案

能修谨
2023-03-14

经过一些调查,我似乎找到了答案,希望它能帮助别人;

在我的连接器配置中,我有这样的配置:

"include.schema.changes": "true"

这使得我的连接器也包含了关于DB表中模式变化的日志。我有一个迁移器的docker容器,它通过运行一些flyway迁移来启动DB容器,其中一个是上面异常中的< code>DROP TABLE。因为模式更改消息没有理由包含< code>op字段,所以它就是不包含(如这里的示例所示)。当过滤器试图获取字段时,它没有找到它,并抛出一个异常。将配置更改为< code>false解决了该问题。

 类似资料:
  • 在debezium mysql连接器中白名单新表时,有没有遵循任何最佳实践? 我们在CDC流中使用debezium mysql连接器,并且出现了一个用例,将连接器配置的更多表列为白名单。以下是正在使用的debezium的版本详细信息以及 这是一张代币票https://issues.redhat.com/browse/DBZ-906这表示要在中运行连接器 模式,并在重新启动连接器之前重新创建历史主题

  • 我有一个现有的2个kafka服务器加载了mysql连接器。它起作用了。此外,我需要添加MongoDB连接器。我已经在我的Kafka服务器(Centos7)上安装了confluent schema registry,它可以工作,我停止/启动/重新启动,看起来没有什么问题。我在这里下载并提取了debezium Mongo插件/usr/连接器/插件/debezium连接器mongodb/ 我编辑了 /e

  • 我正在尝试为给定类别的最流行视频创建YouTubeRSS提要,使用演示API页面:https://gdata.youtube.com/demo/index.html 这对于他们的一个标准API调用就很好了:http://g data . YouTube . com/feeds/base/standard feeds/most _ viewered?alt=rss 然而,一旦我添加了一个类别,我就会

  • 我试图通过Jenkins在UBUNTU AWS/VM上使用XVFB执行无头铬硒测试。 预构建执行外壳程序: 当构建开始时,我看到: 最后: 现在,通过 MAC 上的终端,我使用 命令连接到 VM。 并使用 VNC 查看器,我正在连接到本地主机:5900。它连接了,但我只看到一个黑屏。我期待屏幕上的Chrome浏览器窗口。 我该如何解决这个问题并在vncviewer上观看Chrome window?

  • 问题内容: 我在Google Cloud Firestore中的查询条件有问题。 下面是我的代码,以获得第一个以HA_开头的文档并按ID DESC排序 我想获取文章ID为“ HA_”或“ XE_”开头的文章的最后ID 例如上图: if(articleId以“ HA_”开头)=>返回id 831的对象 if(articleId以“ XE_”开头)=>返回ID为833的对象 现在我得到一个错误 jav

  • 运行下面的代码段,将至少两个项目拖到中心,按“创建”按钮并尝试连接endpoint以查看问题。 当我尝试连接来自不同div的endpoint时,它们实际上是连接的,但问题是,连接路径显示错误。它始终连接源endpoint所在的同一个div中的endpoint。尽管如此,如果您将鼠标悬停在我真正想要连接的点上,这表明连接已经完成,甚至拖动也可以工作。亲自尝试一下,获得完整的体验。