alibaba / canal

阿里巴巴 MySQL binlog 增量订阅&消费组件
Apache License 2.0
28.44k stars 7.6k forks source link

canal1.1.6增量数据同步MySQL到es报NPE异常 #4447

Open deltaj77 opened 2 years ago

deltaj77 commented 2 years ago

dataSourceKey: defaultDS destination: example outerAdapterKey: elasticsearch groupId: g1 esMapping: _index: tar _type: tar _id: _id upsert: true sql: " select t1.icmp_id as _id, t1.name_zh as name_zh, 'persion' as className, t1.remark as reamrk, '' as task, t1.name_en as name_en from test001.tar t1 " commitBatch: 3000

2022-10-10 14:36:47.324 [pool-2-thread-1] ERROR c.a.otter.canal.adapter.launcher.loader.AdapterProcessor - java.lang.NullPointerException java.lang.RuntimeException: java.lang.NullPointerException at com.alibaba.otter.canal.client.adapter.es.core.service.ESSyncService.sync(ESSyncService.java:112) ~[na:na] at com.alibaba.otter.canal.client.adapter.es.core.service.ESSyncService.sync(ESSyncService.java:60) ~[na:na] at com.alibaba.otter.canal.client.adapter.es.core.ESAdapter.sync(ESAdapter.java:104) ~[na:na] at com.alibaba.otter.canal.client.adapter.es.core.ESAdapter.sync(ESAdapter.java:83) ~[na:na] at com.alibaba.otter.canal.adapter.launcher.loader.AdapterProcessor.batchSync(AdapterProcessor.java:140) ~[client-adapter.launcher-1.1.6.jar:na] at com.alibaba.otter.canal.adapter.launcher.loader.AdapterProcessor.lambda$null$1(AdapterProcessor.java:98) ~[client-adapter.launcher-1.1.6.jar:na] at java.base/java.util.concurrent.CopyOnWriteArrayList.forEach(CopyOnWriteArrayList.java:807) ~[na:na] at com.alibaba.otter.canal.adapter.launcher.loader.AdapterProcessor.lambda$null$2(AdapterProcessor.java:95) ~[client-adapter.launcher-1.1.6.jar:na] at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:264) ~[na:na] at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128) ~[na:na] at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628) ~[na:na] at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na] Caused by: java.lang.NullPointerException: null at com.alibaba.otter.canal.client.adapter.es6x.support.ES6xTemplate.insert(ES6xTemplate.java:74) ~[na:na] at com.alibaba.otter.canal.client.adapter.es.core.service.ESSyncService.singleTableSimpleFiledInsert(ESSyncService.java:444) ~[na:na] at com.alibaba.otter.canal.client.adapter.es.core.service.ESSyncService.insert(ESSyncService.java:135) ~[na:na] at com.alibaba.otter.canal.client.adapter.es.core.service.ESSyncService.sync(ESSyncService.java:95) ~[na:na] ... 11 common frames omitted

yuweni99 commented 1 year ago

请问解决了嘛,我也碰到了同样的问题

newbieking commented 8 months ago

我遇到相似的问题,排查后发现是canal获取索引的元信息时,我并没有创建相应的索引,导致获取的相应map信息为空,从而产生NPE: ES7xTemplate::getEsType

Screenshot 2024-02-12 103805

我通过创建相应的索引从而解决了该问题

oldwhite83 commented 7 months ago

我的是1.7 版本,也同样包这个错误,sql 表名也重命名了,

newbieking commented 7 months ago

我的是1.7 版本,也同样包这个错误,sql 表名也重命名了,

你es中对应的索引创建了吗?

yuweni99 commented 7 months ago

我忘记了

发自我的iPhone

------------------ 原始邮件 ------------------ 发件人: newbieking @.> 发送时间: 2024年3月6日 17:00 收件人: alibaba/canal @.> 抄送: yuweni99 @.>, Comment @.> 主题: Re: [alibaba/canal] canal1.1.6增量数据同步MySQL到es报NPE异常 (Issue #4447)

我的是1.7 版本,也同样包这个错误,sql 表名也重命名了,

你es中对应的索引创建了吗?

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you commented.Message ID: @.***>

cynen commented 6 months ago

貌似是需要自己手工先 去es创建对应的索引