Confluent Kafka Sink Connector未将数据加载到Postgres表

时间:2018-05-23 18:14:37

标签: postgresql jdbc apache-kafka apache-kafka-connect confluent

我正在尝试通过Kafka Sink连接器将数据加载到Postgres表,但是我收到以下错误:

  

引起:org.apache.kafka.connect.errors.ConnectException:无法ALTER添加缺少的字段SinkRecordField {schema = Schema {STRING},name ='A_ABBREV',isPrimaryKey = false},因为它不是可选的,没有默认值

Postgres DB中的表已经有字段A_ABBREV,但现在确定我为什么会丢失字段错误。

有没有人面对类似的问题?

以下是我的接收器配置:

connector.class=io.confluent.connect.jdbc.JdbcSinkConnector
table.name.format=AGENCY
connection.password=passcode
topics=AGENCIES
tasks.max=1
batch.size=10000
fields.whitelist=A_ID, A_NAME, A_ABBREV
connection.user=pmmdevuser
name=partner5-jdbcSinkConnector
connection.url=jdbc:postgresql://aws-db.sdfdgfdrwwisc.us-east- 1.rds.amazonaws.com:3306/pmmdevdb?currentSchema=ams
insert.mode=upsert
pk.mode=record_value
pk.fields=A_ID
auto.create=false

我使用Liquibase脚本创建表,下面是来自postgres DB的创建查询,该查询是通过Liquibase脚本创建的:

"CREATE TABLE gds.agency
(
    a_id integer NOT NULL,
    a_name character varying(100) COLLATE pg_catalog."default" NOT NULL,
    a_abbrev character varying(8) COLLATE pg_catalog."default" NOT NULL,
    source character varying(255) COLLATE pg_catalog."default" NOT NULL DEFAULT 'AMS'::character varying,
    CONSTRAINT pk_agency PRIMARY KEY (a_id),
    CONSTRAINT a_abbrev_uk1 UNIQUE (a_abbrev)
)"

1 个答案:

答案 0 :(得分:0)

根据我的经验,这意味着接收器的字段定义与源表/数据库的字段定义不匹配。确保字段定义匹配。检查接收器连接器试图写入目标数据库的单个记录。您应该能够在堆栈跟踪中以调试模式看到此插入语句。进行查询并手动运行它,以从数据库中更清楚地了解错误。