apache-kafka - Kafka Connect JDBC 源:必填字段的空值且没有默认值
问题描述
我正在尝试使用 postgresql 设置 Kafka Connect Jdbc 源连接器,但出现以下错误:
org.apache.kafka.connect.errors.DataException: Conversion error: null value for field that is required and has no default value
at org.apache.kafka.connect.json.JsonConverter.convertToJson(JsonConverter.java:556)
at org.apache.kafka.connect.json.JsonConverter.convertToJson(JsonConverter.java:650)
at org.apache.kafka.connect.json.JsonConverter.convertToJsonWithEnvelope(JsonConverter.java:537)
at org.apache.kafka.connect.json.JsonConverter.fromConnectData(JsonConverter.java:290)
at org.apache.kafka.connect.runtime.WorkerSourceTask.sendRecords(WorkerSourceTask.java:198)
at org.apache.kafka.connect.runtime.WorkerSourceTask.execute(WorkerSourceTask.java:168)
at org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:146)
at org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:190)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)
这是配置:
{
"connector.class": "io.confluent.connect.jdbc.JdbcSourceConnector",
"incrementing.column.name": "id",
"tasks.max": "1",
"query": "SELECT * FROM comments",
"table.whitelist": "comments",
"mode": "incrementing",
"key.converter.schemas.enable": "true",
"topic.prefix": "comments_topic",
"value.converter.schemas.enable": "true",
"name": "JdbcSourceConnector",
"connection.url": "jdbc:postgresql://db:5432/my-db?user=postgres&password=password",
"value.converter": "org.apache.kafka.connect.json.JsonConverter",
"key.converter": "org.apache.kafka.connect.json.JsonConverter"
}
知道问题可能是什么吗?
我有时也会收到此错误:
org.apache.kafka.connect.errors.DataException: Found null value for non-optional schema
at io.confluent.connect.avro.AvroData.validateSchemaValue(AvroData.java:981)
at io.confluent.connect.avro.AvroData.fromConnectData(AvroData.java:359)
at io.confluent.connect.avro.AvroData.fromConnectData(AvroData.java:532)
at io.confluent.connect.avro.AvroData.fromConnectData(AvroData.java:324)
at io.confluent.connect.avro.AvroConverter.fromConnectData(AvroConverter.java:76)
at org.apache.kafka.connect.runtime.WorkerSourceTask.sendRecords(WorkerSourceTask.java:198)
at org.apache.kafka.connect.runtime.WorkerSourceTask.execute(WorkerSourceTask.java:168)
at org.apache.kafka.connect.runtime.WorkerTask.doRun(WorkerTask.java:146)
at org.apache.kafka.connect.runtime.WorkerTask.run(WorkerTask.java:190)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
at java.lang.Thread.run(Thread.java:748)
解决方案
推荐阅读
- python-3.x - 如何在具有多列图的 seaborn catplot 中添加垂直网格线
- mysql - 使用同一表中另一列的数据计数更新一列?
- azure-batch - 如何授予作业管理器任务权限以调整池的大小?
- php - 在 WooCommerce 中应用特定优惠券代码时向客户发送电子邮件通知
- python - 为什么正则表达式卡住了?
- java - 每次我尝试在我的应用程序中按书时都有一个例外
- angular - stylePreprocessorOptions includePaths 没有导入我的 scss 文件
- python - 获取熊猫数据框中为真的列名
- tensorflow - TensorFlow lite 转换:错误:op 操作数必须是 8 位无符号整数的张量,但得到 tensor<1x?x?x3x!tf.quint8>
- python - Pymc3 类型错误 __init__() 得到了一个意外的关键字参数 'coords'