vertica 7.2无法从kafka导入消息

pgvzfuti  于 2021-06-08  发布在  Kafka
关注(0)|答案(2)|浏览(448)

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

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

以及它在kafka\u config.kafka\u事件中的外观:
发生错误,正在从微批处理回滚更改。
|java.sql.sqldataexception:[vertica]vjdbc错误:无法在com.vertica.dataengine.vresultset.fetchchunk(未知源)的com.vertica.util.servererrordata.buildexception(未知源)的com.vertica.dataengine.vresultset.fetchchunk(未知源)的copy语句中将not null列(设备类型)设置为null值com.vertica.dataengine.vqueryexecutor.readexecutersponse(未知源),位于com.vertica.dataengine.vqueryexecutor.handleexecuteresponse(未知源),位于com.vertica.dataengine.vqueryexecutor.execute(未知源),位于com.vertica.jdbc.common.sstatement.executenoparams(未知源),位于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错误:无法在中将not null列(设备类型)设置为null值复制语句。。。还有11个
忘了我有错误,但如何告诉vertica跳过复制错误并转到Kafka主题中的下一偏移?我尝试了所有的Kafka森解析器选项,但没有效果。

c3frrgcw

c3frrgcw1#

我相信这是复制和约束在vertica中工作方式的产物。通常,当一条记录“坏”时,copy会拒绝该记录并继续。但是,notnull约束发生在加载堆栈的更下游,并导致整个语句回滚。因此,偏移计数器从不递增:这将导致数据丢失。
目前,解决方法是将不带notnull约束的表作为目标。

7bsow1i6

7bsow1i62#

必须创建弹性表而不是典型表。请尝试以下命令(在“复制”命令之前):

CREATE FLEX TABLE events();

相关问题