Я пытаюсь запросить таблицу Cassandra traces, которая является частью архитектуры Jaeger. Как видите, поле 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)
)
из кода питона:
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
- Мой первый вопрос: можно ли напрямую выбрать родительскую трассировку без повторения результата? Есть ли способ получить первый элемент в списке, а затем получить элементы внутри из списка выбора?
- С терминала, использующего cqlsh, я получаю такой результат:
trace_id: 0x00000000000000003917678c73006f57
. Однако от клиента python cassandra я получил этуtrace_id=b'\x00\x00\x00\x00\x00\x00\x00\x009\x17g\x8cs\x00oW'
любую идею, какое преобразование с ней произошло? Как его расшифровать, так как я хочу снова запросить таблицу.