Apache kafka Vertica 7.2无法从Kafka导入邮件

Apache kafka Vertica 7.2无法从Kafka导入邮件,apache-kafka,vertica,Apache Kafka,Vertica,我正在尝试在Vertica v7.2.0-0中处理卡夫卡的新功能。我用json数据运行Kafka broker,主题为“事件”。我在Vertica中配置了Kafka调度程序,设置了代理、目标表、Kafka JSON解析器等。除了Vertica接收到损坏的消息时,一切正常。她回滚复制事务,不移动偏移量,而不是获取新消息,只跳过错误或将em写入被拒绝的表。假设我在表中没有空列,当Vertica在不需要列的情况下获取json时,下一个错误持续发生(来自Vertica.log): 以及它在kafka_c

我正在尝试在Vertica v7.2.0-0中处理卡夫卡的新功能。我用json数据运行Kafka broker,主题为“事件”。我在Vertica中配置了Kafka调度程序,设置了代理、目标表、Kafka JSON解析器等。除了Vertica接收到损坏的消息时,一切正常。她回滚复制事务,不移动偏移量,而不是获取新消息,只跳过错误或将em写入被拒绝的表。假设我在表中没有空列,当Vertica在不需要列的情况下获取json时,下一个错误持续发生(来自Vertica.log):

以及它在kafka_config.kafka_事件中的外观:

发生错误,正在从微批处理回滚更改。
|java.sql.SQLDataException:[Vertica]VJDBC错误:无法设置 一个NOT NULL列(设备类型)在 com.vertica.util.ServerErrorData.buildException(未知源)位于 com.vertica.dataengine.VResultSet.fetchChunk(未知源)位于 com.vertica.dataengine.VResultSet.initialize(未知源)位于 com.vertica.dataengine.VQueryExecutor.readExecuteResponse(未知 来源)在 com.vertica.dataengine.VQueryExecutor.handleexecutereresponse(未知 来源)com.vertica.dataengine.VQueryExecutor.execute(未知 来源)com.vertica.jdbc.common.SStatement.ExecuteOparms(未知 来源)com.vertica.jdbc.common.SStatement.executeUpdate(未知 来源)在 com.vertica.solutions.kafka.scheduler.MicroBatch.execute(MicroBatch.java:158) 在 com.vertica.solutions.kafka.scheduler.LaneWorker.run(LaneWorker.java:67) 在java.lang.Thread.run(未知源)处,由以下原因引起: com.vertica.support.exceptions.DataException:[vertica]VJDBC 错误:无法将中的非空列(设备类型)设置为空值 复制语句。。。还有11个


忘记我有错误,但如何告诉Vertica跳过复制错误并转到卡夫卡主题中的下一个偏移?我已经尝试了所有KafkaJSONParser选项,但没有效果。

我相信这是复制和约束在Vertica中工作方式的产物。通常,当一条记录“坏”时,拷贝将拒绝该记录并继续。但是,NOTNULL约束发生在加载堆栈的下一层,并导致整个语句回滚。因此,偏移计数器从不递增:这将导致数据丢失


目前的解决方法是针对一个没有NOTNULL约束的表。

您必须创建一个灵活的表,而不是典型的表。请尝试以下命令(在“复制”命令之前):


我认为这个问题更适合官方提出。
COPY "public"."events" SOURCE KafkaSource(stream='events|0|410015', brokers='1.2.3.4:9092', duration=interval '9884 milliseconds', stop_on_eof=true, executionparallelism=1 ) PARSER KafkaJSONParser( ) REJECTED DATA AS TABLE public.kafka_rej2 TRICKLE NO COMMIT 
Cannot set a NOT NULL column (device_type) to a NULL value in COPY statement
CREATE FLEX TABLE events();