0

JDBC 싱크 커넥터를 사용하여 2 개의 카프카 항목을 읽고이를 수동으로 만든 2 개의 Oracle 테이블로 업 샘플하려고합니다. 각 테이블에는 upsert 모드에서 사용하려는 1 개의 기본 키가 있습니다. 커넥터는 1 주제에 대해서만 사용하고 pk.fields에서는 1 필드 만 사용하면 잘 작동하지만 각 테이블에서 하나씩 pk.fields에 여러 열을 입력하면 스키마를 인식하지 못합니다. 내가 놓친 것이 있으시면 제안하십시오.JDBC 싱크 커넥터 - kafka-connect를 사용하여 여러 테이블 항목에서 여러 테이블로 업 그레 이터

name=oracle_sink_prod 
connector.class=io.confluent.connect.jdbc.JdbcSinkConnector 
tasks.max=1 
topics=KAFKA1011,JAFKA1011 
connection.url=URL 
connection.user=UID 
connection.password=PASSWD 
auto.create=false 
table.name.format=KAFKA1011,JAFKA1011 
pk.mode=record_value 
pk.fields= ID,COMPANY 
auto.evolve=true 
insert.mode=upsert 

//ID is pk of kafka1011 table and COMPANY is of other 

답변

0

PK가 다른 경우 두 개의 다른 싱크 커넥터를 만듭니다. 그들은 모두 같은 카프카 커넥트 (Kafka Connect) 근로자에서 근무할 수 있습니다.

카프카 메시지 자체의 키를 사용할 수도 있습니다. 자세한 내용은 doc을 참조하십시오. 이것은보다 확장 성이 뛰어난 옵션이므로, 메시지가 올바르게 입력되었는지 확인하여 JDBC Sink로 전달하면됩니다.

+0

고마워요 로빈하지만 미래에는 주제 수가 늘어날수록 최대 100 개가 될 것이며 100 개의 커넥터를 관리 할 수있는 좋은 선택입니까? 또한 우리는 kafka를 사용하여 데이터 파이프 라인을 실시간으로 만들 계획을 세웠습니다. 소스는 여러 오라클 데이터베이스가 될 것이고 싱크는 오라클 데이터웨어 하우스가 될 것이므로 많은 커넥터를 관리하기가 어려울까요? –

+0

나는 나의 대답을 업데이트했다. 당신은 또한'record_key' 옵션을 사용할 수 있으며, 카프카 메시지가 적절히 입력되어 있는지 확인해야한다. 오라클에서 데이터를 가져 오는 데 사용하는 옵션은 무엇입니까? GoldenGate와 같은 도구로 키를 지정할 수 있으며 [SMT] (https://www.confluent.io/blog/simplest-useful-kafka-connect-data-pipeline-world-thereabouts-part-3/)를 사용할 수도 있습니다. 연결 자체에서 키 정의 –