scan

scan 命令对于调试和导出数据点很有用。提供一个开始时间,可选的结束时间以及一个或多个查询,并且响应将是来自存储或数据点的原始字节数据,其格式可以与 import 命令一起使用。扫描还提供了删除数据的基本方法。 scan 命令接受常见的 CLI 参数。数据被发送到标准输出。

请注意,尽管查询需要聚合器,但实际上将其忽略。如果查询包含许多时间序列,则扫描输出可能会非常大,因此在制作查询时要小心。

Parameters

scan [--delete|--import] START-DATE [END-DATE] query [queries...]
NameData TypeDescriptionDefaultExample
--deleteFlag可选标志,用于删除与查询匹配的任何行中的数据。请参阅下面的警告。Not set--delete
--importflag输出结果的可选标志为文本格式,可用于导入或存储为备份。Not set--import
START-DATE字符串或整数查询的开始时间。这可以是绝对时间或相对时间。有关详情,请参见日期和时间 1h-ago
END-DATE字符串或整数查询的可选结束时间。如果未提供,则使用当前时间。这可以是绝对时间或相对时间。有关详情,请参见日期和时间Current timestamp2014/01/01-00:00:00
queryString一个或多个命令行查询 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 | fl表示值是整数(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