【发布时间】:2021-02-20 21:02:42
【问题描述】:
我正在尝试查询属于 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'知道它发生了什么转变吗?我想用它再次查询表,如何解码它。
【问题讨论】:
标签: python-3.x cassandra jaeger cassandra-driver