Easily move your data from Kafka To Redshift to enhance your analytics capabilities. With Hevo’s intuitive pipeline setup, data flows in real-time—check out our 1-minute demo below to see the seamless integration in action!

The Kafka Connect Amazon Redshift Sink connector is used to poll data from Kafka into Redshift. In this article let us go through the steps to use the connector to export data from Kafka to Redshift. It will help you take charge in a hassle-free way without compromising efficiency. This article aims at making the data export process as smooth as possible.

Apache Kafka

Apache Kafka

Apache Kafka is an event streaming platform by Apache Software Foundation (that was originally developed by LinkedIn as Kafka). It handles unified, high throughput, low latency real-time data feeds. Kafka is based on a distributed commit log and from there you can subscribe and publish data to multiple real-time applications. You can write, read, store, and process events using Kafka. 

Kafka provides high-level functions for transformations, aggregations, joins, windowing, etc., to process event streams. Event streaming is used in a wide variety of industries that require real-time access to data, ranging from banking and stock exchange to hospitals and factories.

Hevo, A Simpler Alternative to Integrate your Data for Analysis

Hevo offers a faster way to move data from databases or SaaS applications like Kafka into Redshift to be visualized in a BI tool. Hevo is fully automated and hence does not require you to code.

Check out some of the cool features of Hevo:

  • Completely Automated: The Hevo platform can be set up in just a few minutes and requires minimal maintenance.
  • Real-time Data Transfer: Hevo provides real-time data migration, so you can have analysis-ready data always.
  • 100% Complete & Accurate Data Transfer: Hevo’s robust infrastructure ensures reliable data transfer with zero data loss.
Sign up here for a 14-day free trial!

Kafka Connect

Kafka Connect is an open-source component of Kafka, that is used to connect Kafka with external systems. 

The Kafka Connect Amazon Redshift Sink connector lets you export/stream data from Kafka topics to Redshift by polling data from Kafka and writing it to the Redshift database. It supports Avro, JSON schema, or Protobuf input data formats.

What is Redshift?

Redshift Logo

Amazon Redshift is a fully managed, cloud-based data warehouse. It is fast, cost-effective, and scalable. Its basic architecture includes nodes and clusters. Nodes are a collection of computing resources, and these nodes organize, to form clusters. Each cluster contains at least one node, and one or more compute nodes. It is a column-oriented database, designed to connect to various sources, such as BI tools, databases, etc., and making data available in real-time. As it is based on PostgreSQL, you can use ODBC and JDBC to connect to third-party applications.

Prerequisites

  • We will use the Kafka Connect Amazon Redshift Sink connector to export data from Kafka topics to the Redshift database. To run Kafka  Connect Amazon Redshift Sink connector, you need:
  • Confluent platform 3.3.0 or above, or Kafka 0.11.0 or above
  • Java 1.8
  • INSERT access privilege (at least)

Steps to Stream Data from Kafka to Redshift

Here are the steps to stream data from Kafka to Redshift.

Integrate Kafka to Redshift
Integrate Kafka to Snowflake
Integrate Kafka to BigQuery

Method 1: Best Way to Connect Kafka to Redshift: Using Hevo

Step 1: Configure your Kafka source details

Set Up Kafka Source

Step 2: Setup your Redshift destination details 

Configure Destination

With these Simple and straightforward steps, you have successfully connec

Method 2: Manual method to Stream data from Kafka to Redshift

Step 1: Install the Redshift Connector

  • You can install the latest version of the Redshift connector by running the following command on the Confluent Platform installation directory. 
confluent-hub install confluentinc/kafka-connect-aws-redshift:latest

Step 2: Install the Redshift JDBC Driver

  • The connector needs a JDBC driver to connect to Redshift. The JDBC 4.0 driver JAR file that comes with AWS SDK needs to be placed on each Connect worker node. Download the Redshift JDBC Driver here and place the JAR file into this directory:
share/confluent-hub-components/confluentinc-kafka-connect-aws-redshift/lib
  • Now restart all of the Connect worker nodes.

Step 3: Create an Amazon Redshift Instance

Make sure you have the required permissions to create and administer Redshift instances.

  • Log into AWS Management Console and navigate to Redshift.
  • Go to Clusters and select “Quick Launch Cluster”.
  • Set the “Master User Password” and Click “Launch Cluster”

In a few minutes, your cluster will be available.

Step 4: Load the Connector

  • Create a properties file for your Amazon Redshift Sink Connector.
name=redshift-sink
confluent.topic.bootstrap.servers=localhost:9092
confluent.topic.replication.factor=1
connector.class=io.confluent.connect.aws.redshift.RedshiftSinkConnector
tasks.max=1
topics=orders
aws.redshift.domain=< Required Configuration >
aws.redshift.port=< Required Configuration >
aws.redshift.database=< Required Configuration >
aws.redshift.user=< Required Configuration >
aws.redshift.password=< Required Configuration >
pk.mode=kafka
auto.create=true
  • Enter your cluster configuration parameters as they are in your Cluster Details.
  • Load the redshift-sink connector.
confluent local services connect connector load redshift-sink --config redshift-sink.properties
  • If you don’t use CLI, use the following command:
 <path-to-confluent>/bin/connect-standalone 
<path-to-confluent>/etc/schema-registry/connect-avro-standalone.properties 
redshift-sink.properties
  • Your output will look like this:
{
  "name": "redshift-sink",
  "config": {
    "confluent.topic.bootstrap.servers": "localhost:9092",
    "connector.class": "io.confluent.connect.aws.redshift.RedshiftSinkConnector",
    "tasks.max": "1",
    "topics": "orders",
    "aws.redshift.domain": "cluster-name.cluster-id.region.redshift.amazonaws.com",
    "aws.redshift.port": "5439",
    "aws.redshift.database": "dev",
    "aws.redshift.user": "awsuser",
    "aws.redshift.password": "your-password",
    "auto.create": "true",
    "pk.mode": "kafka",
    "name": "redshift-sink"
  },
  "tasks": [],
  "type": "sink"
}

Step 5: Produce a Record in Kafka

  • Produce a record in the orders topic:
./bin/kafka-avro-console-producer 
--broker-list localhost:9092 --topic orders 
--property value.schema='{"type":"record","name":"myrecord","fields":[{"name":"id","type":"int"},{"name":"product", "type": "string"}, {"name":"quantity", "type": "int"}, {"name":"price", "type": "float"}]}'
  • Enter the following record in the terminal and click Enter:
{"id": 999, "product": "foo", "quantity": 100, "price": 50}
SELECT * from orders;

Limitations of Manual Method

  1. Complex Setup and Configuration: Setting up the connection between Kafka and Redshift requires custom coding, manual data pipelines, and management of various components.
  2. Latency and Real: Time Data Challenges: Redshift is optimized for batch loading, whereas Kafka is designed for real-time streaming. Without specialized tools (e.g., Kafka Connect, Hevo), manually loading data in real-time to Redshift can introduce latency.
  3. Error Handling and Data Loss: Manual integration lacks robust error-handling mechanisms. If a data stream fails during transmission from Kafka to Redshift, it can result in incomplete or lost data.
  4. Scalability Issues: Scaling Kafka consumers, data processors, and Redshift clusters in response to growing data volumes is difficult when managed manually.

Use Cases of Connecting Kafka with Redshift

  1. Real-Time Data Analytics: Streaming data from Kafka to Redshift enables businesses to perform real-time analytics on live data, such as tracking user activity, monitoring transactions, or analyzing sensor data.
  2. Centralized Data Warehousing: Kafka ingests data from multiple distributed systems (IoT devices, apps, databases), and Redshift acts as the centralized data warehouse where this data is stored for reporting and analysis.
  3. Customer Behavior Tracking: Data from customer interactions (e.g., web, mobile app usage) can be streamed via Kafka and loaded into Redshift for behavioral analysis.

Conclusion

You have seen how you can use the Kafka Connect Redshift Sink Connector to stream data from Kafka to Redshift. But if you are looking for an automatic tool that will free you from all the hassle, try Hevo Data.

Hevo is a No-Code Data Pipeline as a service. You can instantly start moving your data in real-time from any source to Redshift or other data destinations. Even if your data changes in the future in the form of new tables, columns, or data types, Hevo manages the schema. It is easy to set up, requires minimal maintenance, and is extremely secure. 

FAQ on Kafka Redshift

How do you connect Kafka to Redshift?

Use Kafka Connect with the Redshift Sink Connector to stream data from Kafka to Redshift.
Alternatively, write a custom consumer in Python or Java to consume Kafka data and load it into Redshift using JDBC.

What is the difference between Redshift and Kafka?

Redshift is a data warehouse used for analytics, while Kafka is a distributed streaming platform for real-time data pipelines.

How do you send data from Kafka to the database?

To send data from Kafka to a database, use a Kafka Sink Connector (e.g., JDBC Sink Connector) to consume messages from Kafka topics and write them to the target database. Configure and deploy the connector via Kafka Connect to automate the data flow.

Nikhil Annadanam
Technical Content Writer, Hevo Data

Nikhil is an accomplished technical content writer with extensive expertise in the data industry. With six years of professional experience, he adeptly creates informative and engaging content that delves into the intricacies of data science. Nikhil's skill lies in merging his problem-solving prowess with a profound grasp of data analytics, enabling him to produce compelling narratives that resonate deeply with his audience.