Kafka Connect на собеседовании Data Engineer

Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

Карьерник — Duolingo для аналитиков: 10 минут в день тренируй SQL, Python, A/B, статистику, метрики и ещё 3 темы собеса. 1500+ вопросов в Telegram-боте. Бесплатно.

Что такое Kafka Connect

Framework для streaming integration без code. Configure via JSON.

Source DB → Source Connector → Kafka → Sink Connector → Target DB

Стандарт для CDC pipelines.

Source connectors

Debezium — most popular. CDC из Postgres, MySQL, MongoDB, Oracle, SQL Server.

JDBC source. Periodic SELECT из RDBMS. Less efficient than CDC.

File source. Watch directory.

S3 source. Read files from S3.

{
  "name": "postgres-cdc",
  "config": {
    "connector.class": "io.debezium.connector.postgresql.PostgresConnector",
    "database.hostname": "...",
    "database.dbname": "...",
    "schema.include": "public",
    "table.include.list": "public.orders,public.users"
  }
}

Sink connectors

Elasticsearch sink. Search indexing.

JDBC sink. Write обратно в RDBMS.

S3 sink. Archive to S3 как Parquet / JSON.

ClickHouse sink. Stream к CH.

HDFS sink.

{
  "name": "s3-sink",
  "config": {
    "connector.class": "io.confluent.connect.s3.S3SinkConnector",
    "topics": "orders",
    "s3.bucket.name": "my-bucket",
    "format.class": "io.confluent.connect.s3.format.parquet.ParquetFormat",
    "rotate.schedule.interval.ms": "60000"
  }
}
Готовься к собесу аналитика как в Duolingo
10 минут в день — SQL, Python, A/B, метрики. 1700+ вопросов в Telegram
Открыть Карьерник в Telegram

Distributed mode

Standalone. Single worker. Dev / small.

Distributed. Multiple workers. Tasks distributed.

Worker 1: Task1, Task2 (Connector A)
Worker 2: Task3 (Connector B), Task4 (Connector A)

REST API to manage. Cluster scales horizontally.

Single Message Transforms

Lightweight transformations в Connect без code.

Examples:

  • Mask PII fields.
  • Rename fields.
  • Cast types.
  • Filter messages.
  • Add timestamp.
"transforms": "MaskField",
"transforms.MaskField.type": "org.apache.kafka.connect.transforms.MaskField$Value",
"transforms.MaskField.fields": "ssn,credit_card"

Связанные темы

FAQ

Это официальная информация?

Нет. Статья основана на документации Apache Kafka / Confluent / Debezium.


Тренируйте Data Engineering — откройте тренажёр с 1500+ вопросами для собесов.