scan
scan 命令对于调试和导出数据点很有用。提供一个开始时间,可选的结束时间以及一个或多个查询,并且响应将是来自存储或数据点的原始字节数据,其格式可以与 import 命令一起使用。扫描还提供了删除数据的基本方法。 scan 命令接受常见的 CLI 参数。数据被发送到标准输出。
请注意,尽管查询需要聚合器,但实际上将其忽略。如果查询包含许多时间序列,则扫描输出可能会非常大,因此在制作查询时要小心。
Parameters
scan [--delete|--import] START-DATE [END-DATE] query [queries...]
Name | Data Type | Description | Default | Example |
---|---|---|---|---|
--delete | Flag | 可选标志,用于删除与查询匹配的任何行中的数据。请参阅下面的警告。 | Not set | --delete |
--import | flag | 输出结果的可选标志为文本格式,可用于导入或存储为备份。 | Not set | --import |
START-DATE | 字符串或整数 | 查询的开始时间。这可以是绝对时间或相对时间。有关详情,请参见日期和时间 | 1h-ago | |
END-DATE | 字符串或整数 | 查询的可选结束时间。如果未提供,则使用当前时间。这可以是绝对时间或相对时间。有关详情,请参见日期和时间 | Current timestamp | 2014/01/01-00:00:00 |
query | String | 一个或多个命令行查询 | sum tsd.hbase.rpcs type = put |
Example:
scan --import 1h-ago now sum tsd.hbase.rpcs type=put sum tsd.hbase.rpcs type=scan
Warning
如果您包含--delete
标志,则与查询匹配的“ any”行中的“ ALL”数据将被永久删除。行在 1 小时的边界上分开,因此,如果您发出的扫描命令的开始和结束时间在一小时内覆盖了 10 分钟,则整小时的数据将被删除。
删除还将连续删除任何与注解或非 TSDB 相关的数据。
Note
scan 命令返回行边界(1 小时)上的数据,因此结果可能包括指定的开始时间和结束时间之前和之后的数据。
Raw Output
scan
的默认输出是与给定查询匹配的行和列的原始转储。这在调试情况下很有用,例如数据点冲突或编码问题。由于输出包括原始字节数组,并且格式根据数据而略有变化,因此不易通过机器解析。
行键,列限定符和列值作为 Java 字节数组发出。这些用方括号括起来,各个字节表示为有符号整数(因为 Java 没有本地无符号 int)。首先打印行键,然后打印新行。然后,将每一列打印在其自己的行上,并用两个空格缩进以表明它属于上一行。如果找到了压缩列,则将打印原始数据和压缩值的数量,然后打印新行。每个压缩的数据点都打印在其自己的缩进线上。Comments 也以原始模式发出。
下面列出了各种格式。 \t
表达式表示一个选项卡。 space
表示空格字符。
行键格式
[<row key>] <metric name> <row timestamp> (<datetime>) <tag/value pairs>
Where:
Note
-
行键 是行键的原始字节数组
-
度量名称 是该行代表的度量的解码名称
-
行时间戳 是该行的基本时间戳,以秒为单位(在 1 小时边界上)
-
datetime 是系统默认格式化的人类可读时间戳记
-
标记/值对 标记是否与时间序列相关联
Example:
[0, 0, 1, 80, -30, 39, 0, 0, 0, 1, 0, 0, 1] sys.cpu.user 1356998400 (Mon Dec 31 19:00:00 EST 2012) {host=web01}
单数据点列格式
<two spaces>[<qualifier>]\t[<value>]\t<offset>\t<l|f>\t<timestamp>\t(<datetime>)
Where:
Note
-
qualifier 是列限定符的原始字节数组
-
value 是列值的原始字节数组
-
offset 是相对于行基础时间戳的偏移量的秒数或毫秒数(基于时间戳)
-
l | f 是
l
表示值是整数(Java Long),还是f
表示浮点值。 -
时间戳 是数据点的绝对时间戳,以秒或毫秒为单位
-
datetime 是系统默认格式化的人类可读时间戳记
Example:
[0, 17] [0, 17] [1, 1] 1 l 1356998401 (Mon Dec 31 19:00:01 EST 2012)
压缩列格式
<two spaces>[<qualifier>]\t[<value>] = <number of datapoints> values:
Where:
Note
-
qualifier 是列限定符的原始字节数组
-
value 是列值的原始字节数组
-
数据点数 是压缩列中的数据点数
Example:
[-16, 0, 0, 7, -16, 0, 2, 7, -16, 0, 1, 7] [0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 6, 0] = 3 values:
压缩列中的每个数据点都遵循与单个列相同的格式,并增加了两个缩进空间。
Comments 列格式
<two spaces>[<qualifier>]\t[<value>]\t<offset>\t<JSON\>\t<timestamp\>\t(<datetime>)
Where:
Note
-
qualifier 是列限定符的原始字节数组
-
value 是列值的原始字节数组
-
offset 是相对于行基础时间戳的偏移量的秒数或毫秒数(基于时间戳)
-
JSON 是存储在列中的已解码 JSON 数据
-
时间戳 是数据点的绝对时间戳,以秒或毫秒为单位
-
datetime 是系统默认格式化的人类可读时间戳记
Example:
[1, 0, 0] [123, 34...] 0 {"tsuid":"000001000001000001","startTime":1356998400,"endTime":0,"description":"Annotation on seconds","notes":"","custom":null} 1356998416000 (Mon Dec 31 19:00:16 EST 2012)
Import Format
导入格式与 Telnet 样式put
命令相同。
<metric> <timestamp> <value> <tagk=tagv>[...<tagk=tagv>]
Where:
Note
-
metric 是字符串形式的度量名称
-
时间戳 是数据点的绝对时间戳,以秒或毫秒为单位
-
value 是数据点的值
-
tagk = tagv 标记名称/值对是否用空格分隔
Example:
sys.cpu.user 1356998400 42 host=web01 cpu=0
sys.cpu.user 1356998401 24 host=web01 cpu=0