Kafka 到数据仓库:使用 bend-ingest-kafka 将消息加载到 Databend

将消息从 Apache Kafka 导入到像 Databend 这样的云数据仓库可能是一项艰巨的任务。bend-ingest-kafka 工具简化了这一过程,使您能够轻松地将 Kafka 消息导入到 Databend 表中。

什么是 bend-ingest-kafka?

bend-ingest-kafka 工具是一个专门为从 Apache Kafka 到 Databend 进行消息加载的命令行工具,支持以下模式:

  • JSON 模式:此模式解析 JSON 消息并将每个字段加载到目标表的相应列中。它将 Kafka 消息转换为与表模式直接映射的结构化格式。

  • RAW 模式 :在此模式下,该工具会创建一个包含 uuidkoffsetkpartitionraw_datarecord_metadataadd_time 等列的表。Kafka 消息存储在 raw_data 列中,并将其他元数据注入到其他列中,从而保留原始消息格式并提供有用的上下文。

有关 bend-ingest-kafka 的更多详细信息,请查看 README。要安装 bend-ingest-kafka,请运行以下命令:

复制代码
go install github.com/databendcloud/bend-ingest-kafka@latest

如何使用 bend-ingest-kafka

在这里中,我们将安装一个本地 Kafka 实例,创建一个主题,并生成一些示例消息。然后,我们将分别以 JSON 和 RAW 模式将这些消息加载到 Databend Cloud 中。

安装 Kafka

在开始之前,请确保您已运行 Kafka 并创建了一个主题。以下是使用 Docker 的快速部署:

使用 Docker 运行 Kafka 容器:

复制代码
docker run -d \
 - name kafka \
 -p 9092:9092 \
 apache/kafka:latest

创建一个名为 "test-topic" 的主题并生成一些消息:

复制代码
docker exec - workdir /opt/kafka/bin/ -it kafka sh
/opt/kafka/bin $ ./kafka-topics.sh - bootstrap-server localhost:9092 - create - topic test-topic
Created topic test-topic.
/opt/kafka/bin $ ./kafka-console-producer.sh - bootstrap-server localhost:9092 - topic test-topic
>{"id": 1, "name": "Alice", "age": 30}
>{"id": 2, "name": "Bob", "age": 25}

在 Databend Cloud 创建目标表

在 Databend Cloud 中创建一个数据库和表。这张表将作为 JSON 模式加载的目标,因此请确保其模式与之前生成的消息匹配。

复制代码
CREATE DATABASE doc;

CREATE TABLE databend_topic (
 id INT NOT NULL,
 name VARCHAR NOT NULL,
 age INT NOT NULL
 ) ENGINE=FUSE;

使用 JSON 模式加载

使用以下命令开始将消息从 Kafka 加载到 Databend Cloud:

要获取您的 DSN,请登录到 Databend Cloud 并点击"连接"

复制代码
bend-ingest-kafka \
 - kafka-bootstrap-servers="localhost:9092" \
 - kafka-topic="test-topic" \
 - databend-dsn="<your-dsn>" \
 - databend-table="doc.databend_topic" \
 - data-format="json"

您将在终端中看到类似这样的消息:

复制代码
INFO[0000] Starting worker worker-0
2024/08/27 14:31:18 ingest 1 rows (0.900730 rows/s), 38 bytes (34.227748 bytes/s)
WARN[0095] Failed to read message from Kafka: context deadline exceeded kafka_batch_reader=ReadBatch
2024/08/27 14:32:19 ingest 1 rows (1.206118 rows/s), 36 bytes (43.420260 bytes/s)

验证 Kafka 消息是否已成功加载到 Databend Cloud 中的目标表,并且每个字段都正确映射到其指定的列中:

使用 RAW 模式加载

使用以下命令开始将消息从 Kafka 加载到 Databend Cloud:

复制代码
bend-ingest-kafka \
 - kafka-bootstrap-servers="localhost:9092" \
 - kafka-topic="test-topic" \
 - databend-dsn="<your-dsn>" \
 - is-json-transform=false

您将在终端中看到类似这样的消息:

复制代码
INFO[0000] Starting worker worker-0
WARN[0077] Failed to read message from Kafka: context deadline exceeded kafka_batch_reader=ReadBatch
2024/08/27 15:12:56 ingest 2 rows (1.978622 rows/s), 579 bytes (572.811134 bytes/s)

验证 Kafka 消息已成功加载到 Databend Cloud 中,并自动创建了一张表:

相关推荐
SuniaWang2 小时前
《Spring AI + 大模型全栈实战》学习手册系列· 专题二:《Milvus 向量数据库:从零开始搭建 RAG 系统的核心组件》
java·人工智能·分布式·后端·spring·架构·typescript
Hui Baby2 小时前
TIDB分布式数据库提交设想
数据库·分布式·tidb
⑩-2 小时前
RabbitMQ 架构和工作原理?RabbitMQ 延迟队列如何实现?
java·分布式·架构·rabbitmq
国冶机电安装3 小时前
分布式控制系统(DCS)安装:从方案设计到投运验收的完整指南
分布式
飞Link3 小时前
告别 ROS 的臃肿:用 ZeroMQ 构建极速具身智能分布式大脑(附 Python 实战)
开发语言·分布式·python
殷紫川4 小时前
击穿 Kafka 高可用核心:分区副本、ISR 机制与底层原理全链路拆解
架构·kafka
会算数的⑨4 小时前
演进——从查日志到 AI 自治,企业监控体系的变迁
人工智能·分布式·后端·微服务·云原生
岁岁种桃花儿5 小时前
Flink从入门到上天系列第二十五篇:Flink和Kafka连接时的精准一次性
大数据·flink·kafka
一叶飘零_sweeeet5 小时前
分布式权限体系破局:统一认证授权与 OAuth2.0 全链路架构落地实战
分布式·架构
七夜zippoe5 小时前
消息队列选型:Kafka vs RabbitMQ vs Redis 深度对比
redis·python·kafka·消息队列·rabbitmq