从 AutoMQ Kafka 加载流数据到 Timeplus
Timeplus 是一个以流处理为首要功能的数据分析平台。它利用开源流式数据库Proton,提供强大的端到端能力,帮助团队快速、直观地处理流数据和历史数据,适用于各种规模和行业的组织。这一平台使数据工程师和平台工程师能够利用SQL释放流数据的价值。
本文将介绍如何通过 Timeplus 控制台将数据从 AutoMQ for Kafka 导入 Timeplus。AutoMQ for Kafka 100% 兼容 Apache Kafka 协议,因此你也可以创建 Kafka 的外部流来分析 AutoMQ 中的数据而不移动数据。
info
本文中提及的 AutoMQ Kafka 术语,均特指安托盟丘(杭州)科技有限公司通过 GitHub AutoMQ 组织下开源的 automq-for-kafka 项目。
准备 AutoMQ Kafka 环境和测试数据
参考 AutoMQ 注册 AutoMQ Cloud 免费体验▸ 部署 AutoMQ Kafka 集群。请确保 Timeplus 能够与您的 AutoMQ Kafka 服务器直接连接。 您可以使用像 ngrok 这样的工具将你的本地 AutoMQ Kafka 代理安全地暴露在互联网上,这样 Timeplus Cloud 就可以连接到它。 查看博客了解更多详情。
info
如果需要保持 IP 白名单,则需要将 Timeplus 服务的静态 IP 列入白名单:52.83.159.13 对于 cloud.timeplus.com.cn
在AutoMQ Kafka中快速创建一个名为 example _ topic 的主题并向其中写入一条测试JSON数据,可以通过以下步骤实现。
创建Topic:
使用 Kafka 的命令行工具来创建主题。你需要有 Kafka 环境的访问权限,并且确保 Kafka 服务正在运行。以下是创建主题的命令:
./kafka-topics.sh --create --topic exampleto_topic --bootstrap-server 10.0.96.4:9092 --partitions 1 --replication-factor 1
注意:将 topic 和 bootstarp - server 替换为实际使用的 Kafka 服务器地址。
创建 topic 后可以用以下命令检查 topic 创建的结果
./kafka-topics.sh --describe example_topic --bootstrap-server 10.0.96.4:9092
生成测试数据:
生成一条简单的JSON格式的测试数据。
{ "id": 1, "name": "测试用户", "timestamp": "2023-11-10T12:00:00", "status": "active"}
写入测试数据
使用 Kafka 的命令行工具或者编程方式将测试数据写入到 example _ topic。以下是使用命令行工具的一个示例:
echo '{"id": 1, "name": "测试用户", "timestamp": "2023-11-10T12:00:00", "status": "active"}' | sh kafka-console-producer.sh --broker-list 10.0.96.4:9092 --topic example_topic
注意:将 topic 和 bootstarp - server 替换为实际使用的 Kafka 服务器地址。
使用如下命令可以查看刚写入的topic数据:
sh kafka-console-consumer.sh --bootstrap-server 10.0.96.4:9092 --topic example_topic --from-beginning
AutoMQ Kafka数据源
- 在左侧导航菜单中,单击 数据摄取,然后单击右上角的 添加数据 按钮。
- 在此弹出窗口中,您将看到您可以连接的数据源以及其他添加数据的方法。由于 AutoMQ Kafka 完全兼容 Apache Kafka,在此处可以直接点击 Apache Kafka。
- 输入broker URL ,由于默认创建的 AutoMQ Kafka 没有开启TLS和身份验证,因此这里先关闭TLS和身份验证。
- 输入 AutoMQ Kafka 主题的名称,并指定“读取为”的数据格式。 我们目前支持JSON、AVRO和文本格式。
- 如果 AutoMQ Kafka 主题中的数据采用 JSON 格式,但架构可能会随着时间的推移而发生变化,我们建议您选择 Text。 这样,整个 JSON 文档将保存为字符串,即使架构发生变化,您也可以应用与 JSON 相关的函数来提取值。
- 如果您选择AVRO,则有一个“自动提取”选项。 默认情况下,此选项处于关闭状态,这意味着整条消息将另存为字符串。 如果您将其打开,则 AVRO 消息中的顶级属性将被放入不同的列中。 这对您更方便查询,但不支持模式进化。 当选择AVRO时,您还需要指定schema注册表的地址、API密钥和密钥。
- 在接下来的“预览”步骤中,我们将从您指定的 AutoMQ Kafka 数据源中向您展示至少一个事件。
- 默认情况下,您的新数据源将在 Timeplus 中创建一个新流。 给这个新流命名并验证列信息(列名和数据类型)。 您也可以将一列设置为事件时间列。 如果您不这样做,我们将使用摄取时间作为事件时间。 或者,您可以从下拉列表中选择一个现有的流。
- 在预览您的数据后,您可以给源提供一个名称和一个可选的描述,并审查配置。 单击“完成”后,您的流数据将立即在指定的流中可用。
AutoMQ Kafka源说明
使用 AutoMQ Kafka 数据源,需要遵守如下约束:
- 当前仅支持 AutoMQ Kafka 主题中的消息采用 JSON 和 AVRO 格式。
- 主题级别 JSON 属性将被转换为流列。 对于嵌套属性, 元素将被保存为 String 列,然后可以用 JSON functions之一来查询它们。
- JSON 消息中的数值或布尔值类型将被转换为流中的对应类型。
- 日期时间或时间戳将被保存为字符串列。 您可以通过 to_time function 将它们转换回 DateTime。
END
关于我们
AutoMQ 是一家专业的消息队列和流存储软件服务供应商。AutoMQ 开源的 AutoMQ Kafka 和 AutoMQ RocketMQ 基于云对 Apache Kafka、Apache RocketMQ 消息引擎进行重新设计与实现,在充分利用云上的竞价实例、对象存储等服务的基础上,兑现了云设施的规模化红利,带来了下一代更稳定、高效的消息引擎。此外,AutoMQ 推出的 RocketMQ Copilot 专家系统也重新定义了 RocketMQ 消息运维的新范式,赋能消息运维人员更好的管理消息集群。
🌟 GitHub 地址:https://github.com/AutoMQ/automq-for-kafka
👀 B站:AutoMQ官方账号
🔍 视频号:AutoMQ
👉 扫二维码加入我们的社区群
关注我们,一起学习更多云原生干货