我正试图从Cassandra中提取一些时间序列数据。数据由外部应用程序放在那里,它使用KairosDB写入数据(基于OpenTSDB)。我没有选择将KairosDB库放入我正在开发的应用程序中,但是我已经可以使用Datastax Cassandra库了。
我如何编写基本查询以便以可用的方式直接从Cassandra检索信息?查询我可以指定开始/结束时间和行键索引的附加标签。其中一些可能是我缺少的基本Cassandra知识,但是存在特定于模式的问题,例如样本时间存储为row_key_index中绝对时间戳的相对值,或者数据可以跨多个row_key_index分割的事实列取决于数据保留和请求的时间跨度。
如果我直接从列族查询数据,我会得到这样的结果:
cqlsh:kairosdb> select * from string_index;
key | column1 | value
----------------------------+--------------------------------------------+-------
0x7461675f76616c756573 | all | 0x
0x7461675f76616c756573 | data_points | 0x
0x7461675f76616c756573 | eui.3765353036366237 | 0x
0x7461675f76616c756573 | row_key_index | 0x
0x7461675f76616c756573 | string_index | 0x
0x6d65747269635f6e616d6573 | kairosdb.datastore.queries_waiting | 0x
0x6d65747269635f6e616d6573 | kairosdb.datastore.query_time | 0x
0x6d65747269635f6e616d6573 | kairosdb.datastore.write_size | 0x
如果我对row_key_index表进行查询,则数据全部存储为blob。执行blob-> ascii转换会给出:
cqlsh:kairosdb> select blobAsAscii(key) from row_key_index;
blobAsAscii(key)
------------------------------------
kairosdb.datastore.write_size
kairosdb.datastore.write_size
kairosdb.datastore.write_size
kairosdb.datastore.write_size
kairosdb.datastore.write_size
column1上的相同转换给出:
cqlsh:kairosdb> select blobAsAscii(column1) from row_key_index;
blobAsAscii(column1)
----------------------------------------------------------------------------------------
kairosdb.datastore.write_size\x00\x00\x00\x01A\x0fw\xa0\x00buffer=data_points:host=JMOROSKI-DEV:
kairosdb.datastore.write_size\x00\x00\x00\x01A\x0fw\xa0\x00buffer=row_key_index:host=JMOROSKI-DEV:
kairosdb.datastore.write_size\x00\x00\x00\x01A\x0fw\xa0\x00buffer=string_index:host=JMOROSKI-DEV:
kairosdb.datastore.write_size\x00\x00\x00\x01A{\x9d,\x00buffer=data_points:host=JMOROSKI-DEV:
kairosdb.datastore.write_size\x00\x00\x00\x01A{\x9d,\x00buffer=row_key_index:host=JMOROSKI-DEV:
和数据点:
cqlsh:kairosdb> select blobAsAscii(column1) from data_points limit 10;
blobAsAscii(column1)
----------------------
\x00\x00\x00\x00
\x00\x00\x9c@
\x00\x018\x80
\x00\x01\xd4\xc0
\x00\x02q\x00
\x00\x03\r@
\x00\x03\xa9\x80
\x00\x04E\xc0
\x00\x04\xe2\x00
\x00\x05~@
我没有看到时间。我期望row_key_index中的绝对时间和data_points中的相对偏移量。我有时看不到价值观。我没有看到查询特定计算机的统计信息的方法,因为该信息似乎嵌入到row_key_index.column1中的标记中,并且我不知道cql中的任何LIKE或范围切片等价物。