该 sink 将分析结果保存到指定文件中。指定的文件已存在,结果将会覆盖写入。文件源是反向的连接器可以读取文件 sink 的输出。
属性名称 | 是否可选 | 说明 |
---|---|---|
path | 否 | 保存结果的文件路径,例如 /tmp/result.txt 。可设置动态文件名,请点击动态参数参考语法。 |
fileType | 是 | 文件类型,支持 json, csv 或者 lines,其中默认值为 lines。更多信息请参考文件类型。 |
hasHeader | 是 | 指定是否生成文件头。当前仅在文件类型为 csv 时生效。文件头由收到的第一条数据推断得来,推断的 key 采用字母排序。 |
rollingInterval | 是 | 定义 rolling 策略的属性之一。滚动到新文件的最小时间间隔(以毫秒为单位)。检查频率由checkInterval 控制。 |
checkInterval | 是 | 定义 rolling 策略的属性之一。检查基于时间的滚动策略的间隔(以毫秒为单位),用于控制检查文件是否应该翻转的频率。 |
rollingCount | 是 | 定义 rolling 策略的属性之一。文件翻转前的最大消息计数。 |
rollingNamePattern | 是 | 定义 rolling 策略的属性之一。指定滚动文件创建时如何放置时间戳。时间戳可为“前缀”,“后缀”或“无”。 |
compression | 是 | 使用指定的压缩方法压缩 Payload。当前支持 gzip, zstd 算法。 |
其他通用的 sink 属性也支持,请参阅公共属性。其中,format
属性用于定义文件中数据的格式。某些文件类型只能与特定格式一起使用,详情请参阅文件类型。
文件 sink 可以将数据写入不同类型的文件,例如:
文件 Sink 支持配置滚动(Rolling)策略,以控制文件的大小和文件的数量。滚动策略由以下属性控制:rollingInterval、checkInterval、rollingCount 和 rollingNamePattern。
文件滚动可以基于时间或基于消息数或两者。
下面是一个选择温度大于50度的示例,每5秒将结果保存到文件 /tmp/result.txt
中。
{
"sql": "SELECT * from demo where temperature>50",
"actions": [
{
"file": {
"path": "/tmp/result.txt",
"interval": 5000,
"fileType": "lines",
"format": "json"
}
}
]
}
下面是另一个例子,根据 paylaod 中的 device
字段,将结果写入多个文件。每个文件将每1小时或有超过10000条信息时滚动一次。滚动文件名将有一个创建时间戳的前缀,如16998888_deviceName.csv
。
{
"sql": "SELECT * from demo where temperature>50",
"actions": [
{
"file": {
"path": "{{.device}}.csv",
"fileType": "csv",
"format": "delimited",
"hasHeader": true,
"delimiter": ",",
"rollingInterval": 3600000,
"checkInterval": 600000,
"rollingCount": 10000,
"rollingNamePattern": "prefix"
}
}
]
}