The Span Count job

Let's look at how the SpanCountJob is implemented. The Jaeger collector writes spans to Kafka in Protobuf format, so we need a way to parse them. The package io.jaegertracing.api_v2 is auto-generated by the Protobuf compiler from the IDL file found in the Jaeger codebase (model/proto/model.proto in Jaeger v1.8). Protobuf-generated classes are not particularly convenient to work with in Flink, so in the model package we define a simplified model of the trace that only contains the span data that we need for the purpose of the span count calculations:

public class Span implements Serializable { public String traceId; public String spanId; public String serviceName; public String operationName; public long startTimeMicros; public ...

Get Mastering Distributed Tracing now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.