InfluxDB 3.0 中的任务资源

导航至

如果您是 InfluxDB v2 用户,您可能想知道 InfluxDB 3.0 中的任务引擎发生了什么变化。答案是我们将其移除,以便支持与其他任务工具更广泛的互操作性。V3 使​​用户能够利用任何现有的 ETL 工具,而不是被 Flux 任务引擎的有限功能所束缚。

此外,InfluxDB 3.0 优先考虑查询和写入性能,使您能够自信而轻松地查询、转换和写入大型数据集。但是,拥有更多选择需要更多的初始决策。在这篇文章中,我们将重点介绍一些第三方 ETL 工具,并描述每种工具的优势。本文并非旨在对所有现有的 ETL 工具进行详尽的比较。相反,我将重点介绍我们已经有示例的工具。

注意: 所有这些方法和工具都使用 InfluxDB v3 Python 客户端库。此客户端库包含用于查询和写入 Pandas 和 Polars 的方法,以简化 ETL 流程,并使用户能够访问可用于该工作负载的许多 Python 库。

Quix

Quix 是一个完整的解决方案,用于使用 Kafka 和 Python 构建、部署和监控事件流应用程序。Quix 专为处理时间序列数据而设计,并提供云端和本地部署两种版本。其用户界面简化了事件流和 ETL 流程的处理、构建和维护。

Quix 的一些优势包括

  • 用于从/向您的 InfluxDB v3 实例查询和写入数据,并将 InfluxDB v3 集成到您的 Quix 管道中的插件。
  • Quix 可以编排任何容器。

以下是一些开始使用 Quix 和 InfluxDB 3.0 的资源,包括

Mage.ai

Mage 是一个用于转换和集成数据的开源数据管道工具。本质上,它是 Apache Airflow 的开源替代方案。它还包含一个 UI,简化了 ETL 创建过程。Mage 清楚地记录了如何使用 Terraform 和 Helm Charts 在 AWS、Azure、DigitalOcean 和 GCP 上部署。

总结一下,使用 Mage 的一些优势包括

  • Mage 是开源的。
  • Mage 具有以下功能
    • 编排:计划和管理数据管道以实现可观察性
    • Notebook 编辑器:用于编码数据管道的交互式 Python、SQL 和 R 编辑器
    • 数据集成:将来自第三方来源的数据与您的内部目标同步
    • 流式传输:摄取和转换实时数据
    • dbt: 使用 Mage 构建、运行和管理您的 dbt 模型

以下是一些开始使用 Mage 和 InfluxDB 3.0 的资源,包括

AWS Fargate

AWS Fargate 是一种用于容器的无服务器计算引擎,可与 Amazon Elastic Container Service (ECS) 和 Amazon Elastic Kubernetes (EKS) 配合使用。借助 Fargate,您可以运行容器,而无需预置、配置或扩展虚拟机集群。它还支持灵活的资源管理和配置。这使您可以微调容器性能,使 Fargate 成为复杂数据处理的理想选择。

总结一下,使用 AWS Fargate 的一些优势包括

  • 无服务器的简洁性:Fargate 抽象了底层基础设施,使开发人员无需担心预置、扩展或管理 EC2 实例即可部署容器。
  • 成本效率:Fargate 根据容器消耗的资源向用户收费,从而通过消除维护闲置 EC2 实例的需求来节省成本。

以下是一些开始使用 AWS Fargate 和 InfluxDB 3.0 的资源,包括

FaaS 工具

函数即服务 (FaaS) 工具是事件驱动的无服务器计算平台。示例包括 AWS Lambda、Google Cloud Functions 和 Azure Functions。使用 FaaS 工具时的一些优势和注意事项是

  • 它们使开发人员无需预置或管理服务器即可运行代码。
  • 它们包括自动向上扩展。
  • 它们允许用户专注于开发复杂的分析和数据科学逻辑。但是,对计算环境的精细控制较少。
  • 如果任务是间歇性的或具有可变负载,则 FaaS 不会收取空闲计算资源的费用。如果工作负载是一致的,则 Fargate(见下文)可能是更具成本效益的选择。同样,如果您的任务执行时间较长(例如,大于 10 分钟),则 Fargate 可能是最佳选择。

虽然 InfluxData 尚未创建包含 FaaS 工具 PoC 的列表,但您需要利用 InfluxDB v3 Python 客户端库来查询、转换和写入您的数据。以下是一些开始使用 Python 客户端库的资源

python
import polars as pl
from influxdb_client_3 import InfluxDBClient3

client = InfluxDBClient3(
    token="",
    host="eu-central-1-1.aws.cloud2.influxdata.com",
    org="6a841c0c08328fb1")

sql = 'SELECT * FROM caught LIMIT 10'
table = client.query(database="pokemon-codex", query=sql, language='sql', mode='all')
df = pl.from_arrow(table)

有问题吗?

我希望这篇文章能帮助您快速开始将任务迁移到 InfluxDB 3.0,并利用其增强的互操作性、ETL 和特定于数据管道的工具。从 InfluxDB Cloud 3.0 开始。如果您需要帮助,请通过我们的社区站点Slack 频道联系我们。