我正在尝试查询属于 Jaeger 架构的跟踪 Cassandra 表。如您所见, refs 字段是一个列表:
cqlsh:jaeger_v1_dc1> describe traces
CREATE TABLE jaeger_v1_dc1.traces (
trace_id blob,
span_id bigint,
span_hash bigint,
duration bigint,
flags int,
logs list<frozen<log>>,
operation_name text,
parent_id bigint,
process frozen<process>,
refs list<frozen<span_ref>>,
start_time bigint,
tags list<frozen<keyvalue>>,
PRIMARY KEY (trace_id, span_id, span_hash)
)
从python代码:
traces = session.execute('SELECT span_id,refs from traces')
for t in traces:
if t.refs is not None:
parentTrace=t['refs'][0].trace_id
- 我的第一个问题是可以直接选择父跟踪而不遍历结果吗?有没有办法我可以获取列表中的第一个元素,然后从 select 语句中获取元素?
- 从使用 cqlsh 的终端,我得到了这个结果:
trace_id: 0x00000000000000003917678c73006f57
。但是,从 python cassandra 客户端我trace_id=b'\x00\x00\x00\x00\x00\x00\x00\x009\x17g\x8cs\x00oW'
知道它发生了什么转变?既然我想用它来再次查询表,怎么能解码它。