我正在使用 Golang 中的 otel 官方 sdk 跟踪包来实现跟踪功能。其存储库的链接位于此处。
虽然拥有, , ...TracerProvider等所有配置,但我们仍然可以从相同的配置中选择不同的配置:ExporterSpanProcessorSamplerTracerTracerProvider
tracerA := otel.GetTracerProvider().Tracer("TracerA")
tracerB := otel.GetTracerProvider().Tracer("TracerB")
Run Code Online (Sandbox Code Playgroud)
由于它们来自同一个 TracerProvider,因此 TracerA 和 TracerB 的行为相同。没有其他设置可以产生影响。下面的示例将生成一条迹线,而不是分开的迹线。
ctx, span := tracerA.Start(context.Background(), "First Span")
ctx, span = tracerB.start(ctx, "Second Span")
// above becomes
|----------------------| // First Span
|-------------| // Second Span
Run Code Online (Sandbox Code Playgroud)
我想知道为什么otel提供这些不同的Tracer实例。无论Tracer使用哪个,结果都是一样的。它有一个用例吗?
我正在尝试在名称不同但值相同的列上合并两个不同的 DataFrame。例如,
df1
name subject result
0 Kim c pass
1 Lee python pass
2 Choi c fail
Run Code Online (Sandbox Code Playgroud)
df2
name language score
0 Kim c 95
1 Hwang java 85
2 Lee python 97
3 Park python 80
Run Code Online (Sandbox Code Playgroud)
如果我跑pd.merge(df1, df2, left_on='subject', right_on='language')那么我得到
#2 Merge stu1, stu2 by key value
name_x subject result name_y language score
0 Kim c pass Kim c 95
1 Choi c fail Kim c 95
2 Lee python pass Lee python 97
3 Lee …Run Code Online (Sandbox Code Playgroud)