This post walks you through the process of Streaming Data from Kafka to Postgres with Kafka Connect AVRO, Schema Registry and Python.

What you'll need

Stack

  • Python 3
  • Pipenv
  • Flake8
  • Docker Compose
  • Postgres
  • Kafka
  • Kafka Connect
  • AVRO
  • Confluent Schema Registry

Project structure

├── Pipfile
├── Pipfile.lock
├── avro_producer.py
├── docker-compose.yml
├── setup.cfg
└── sink-postgres.json

Project dependencies


Kafka AVRO Producer


Kafka Connect Sink Postgres Config


Docker Compose


Let's Start

Start Confluent Platform

confluent start

You would see this

connect is [UP]  
kafka-rest is [UP]  
schema-registry is [UP]  
kafka is [UP]  
zookeeper is [UP]

ZooKeeper, Kafka, Schema Registry and Kafka Connect should be start listening connections on port 2181, 9092, 8081, 8083 respectively.

Start PostgreSQL Database

docker-compose up

PostgreSQL Database Server should be start listening connections on port 5432

Install project's dependencies

pipenv install  
pipenv shell

Sending data to Kafka topic with AVRO Producer

python avro_producer.py

Load Kafka Connector

confluent load sink-1 -d sink-postgres.json

Postgres should have a table page_1 with data streaming from the consumer.

Source code

git@github.com:hellokoding/kafka-connect-sink-postgres-with-avro-schemaregistry-python.git

https://github.com/hellokoding/kafka-connect-sink-postgres-with-avro-schemaregistry-python