当前位置: 首页 > news >正文

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_metadata 和 add_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 中。

  1. 安装 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}
  1. 在 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;
  1. 使用 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 中的目标表,并且每个字段都正确映射到其指定的列中:

  1. 使用 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 中,并自动创建了一张表:

相关文章:

  • vivado USED_IN
  • C#骑砍逻辑类Mod制作详细解说
  • C++系列-泛型编程之类模板
  • 51单片机——模块化编程
  • Unity编辑器扩展之Hierarchy面板扩展
  • 数美Android SDK
  • 【412】【统计近似相等数对 I】
  • docker python 3.11 容器报错
  • [M模拟] lc3153. 所有数对中数位不同之和(模拟+按位统计)
  • golang 多版本管理工具
  • IDEA没有SQL语句提示
  • 【Springboot服务实现类】用户登录逻辑梳理(未完待续)
  • 数据库与缓存一致性的解决方案
  • django(一):项目搭建
  • python-pptx - Python 操作 PPT 幻灯片
  • 【140天】尚学堂高淇Java300集视频精华笔记(86-87)
  • 8年软件测试工程师感悟——写给还在迷茫中的朋友
  • Android单元测试 - 几个重要问题
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • es6
  • ES学习笔记(10)--ES6中的函数和数组补漏
  • Java新版本的开发已正式进入轨道,版本号18.3
  • React-Native - 收藏集 - 掘金
  • Redis中的lru算法实现
  • 阿里云容器服务区块链解决方案全新升级 支持Hyperledger Fabric v1.1
  • 前端学习笔记之观察者模式
  • 如何设计一个微型分布式架构?
  • 说说动画卡顿的解决方案
  • 通过获取异步加载JS文件进度实现一个canvas环形loading图
  • 因为阿里,他们成了“杭漂”
  • 智能合约开发环境搭建及Hello World合约
  • 最近的计划
  • 白色的风信子
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • # Redis 入门到精通(九)-- 主从复制(1)
  • #!/usr/bin/python与#!/usr/bin/env python的区别
  • #FPGA(基础知识)
  • #includecmath
  • (3)(3.2) MAVLink2数据包签名(安全)
  • (C#)Windows Shell 外壳编程系列4 - 上下文菜单(iContextMenu)(二)嵌入菜单和执行命令...
  • (独孤九剑)--文件系统
  • (二)Linux——Linux常用指令
  • (二)Pytorch快速搭建神经网络模型实现气温预测回归(代码+详细注解)
  • (算法)前K大的和
  • ./和../以及/和~之间的区别
  • .net Stream篇(六)
  • .NET/C# 使用 SpanT 为字符串处理提升性能
  • .net开发引用程序集提示没有强名称的解决办法
  • .Net下使用 Geb.Video.FFMPEG 操作视频文件
  • .NET项目中存在多个web.config文件时的加载顺序
  • .ui文件相关
  • @JoinTable会自动删除关联表的数据
  • @select 怎么写存储过程_你知道select语句和update语句分别是怎么执行的吗?
  • [ C++ ] STL---stack与queue
  • [ 第一章] JavaScript 简史