Parquet 输出插件
此插件将指标写入parquet 文件。默认情况下,指标按度量名称分组并写入同一文件。
如果指标模式与文件中的模式不匹配,该指标将被丢弃。
要了解有关 parquet 格式的更多信息,请查看parquet 文档以及一篇关于查询 parquet 的博文。
引入于: Telegraf v1.32.0 标签: datastore 操作系统支持: all
全局配置选项
插件支持其他全局和插件配置设置,用于修改指标、标签和字段,创建别名以及配置插件顺序等任务。更多详情请参阅 CONFIGURATION.md。
配置
# A plugin that writes metrics to parquet files
[[outputs.parquet]]
## Directory to write parquet files in. If a file already exists the output
## will attempt to continue using the existing file.
# directory = "."
## Files are rotated after the time interval specified. When set to 0 no time
## based rotation is performed.
# rotation_interval = "0h"
## Timestamp field name
## Field name to use to store the timestamp. If set to an empty string, then
## the timestamp is omitted.
# timestamp_field_name = "timestamp"构建 Parquet 文件
架构
Parquet 文件在写入文件时需要一个 schema。为了生成 schema,Telegraf 将遍历所有分组的指标,并基于所有字段和标签的联合生成一个 Apache Arrow schema。如果字段和标签具有相同的名称,则字段具有优先权。
schema 生成的结果是,第一次看到某个指标的刷新序列会花费更长的时间,因为需要额外循环遍历指标来生成 schema。后续的刷新间隔会明显更快。
写入文件时,schema 用于查找每个值,如果值不存在,则添加 null 值。其结果是,如果第一个指标刷新后存在附加字段,则这些字段将被忽略。
写入
该插件使用了缓冲写入器。这可能会将一些指标缓冲到内存中,然后再写入磁盘。使用此方法是因为它可以更紧凑地将多个刷新指标写入单个 Parquet 行组。
此外,Parquet 格式需要一个正确的页脚,因此必须在文件上调用 close() 以确保其格式正确。
关闭
Parquet 文件必须正确关闭,否则文件将无法读取。Parquet 格式在文件末尾需要一个页脚,如果页脚不存在,则无法正确读取文件。
如果在写入 Parquet 文件时 Telegraf 发生崩溃,则有可能会出现这种情况。
文件轮转
如果启动时存在同名目标文件,则现有文件将被轮转以避免覆盖或 schema 冲突。
文件轮转可通过用户可选设置的时间间隔实现。由于使用了缓冲写入器,因此无法进行基于大小的轮转,因为文件在每个间隔可能不会实际获得数据。
探索 Parquet 文件
如果用户希望快速探索 Parquet 文件中的 schema 或数据,则可以考虑以下选项:
CLI
Arrow 存储库包含一个 Go CLI 工具,用于读取和解析 Parquet 文件。
go install github.com/apache/arrow-go/v18/parquet/cmd/parquet_reader@latest
parquet_reader <file>Python
用户还可以使用 pyarrow 库快速打开和探索 Parquet 文件。
import pyarrow.parquet as pq
table = pq.read_table('example.parquet')创建后,用户可以查看各种 pyarrow.Table 函数以进一步探索数据。
此页面是否有帮助?
感谢您的反馈!
支持和反馈
感谢您成为我们社区的一员!我们欢迎并鼓励您对 Telegraf 和本文档提出反馈和 bug 报告。要获取支持,请使用以下资源
具有年度合同或支持合同的客户可以 联系 InfluxData 支持。