|
1 | | -# Rust components |
| 1 | +# OTel-Arrow Rust libraries |
2 | 2 |
|
3 | | -This folder contains various Rust projects of varying stages of maturity. |
| 3 | +This folder contains the OTel-Arrow Rust sub-projects listed below. |
4 | 4 |
|
5 | | -The `otap-dataflow/` folder contains the main deliverable of Phase 2 of the |
6 | | -otel-arrow project, [as mentioned in its README](./otap-dataflow/README.md). |
| 5 | +## OTAP Dataflow |
7 | 6 |
|
8 | | -All other folders are either experimental or initial donations of components |
9 | | -that have yet to be incorporated into the main library. |
| 7 | +**[Sub-project README](./otap-dataflow/README.md)** |
10 | 8 |
|
11 | | -| Folder | Type | |
12 | | -|-----------------|------------------------------| |
13 | | -| beaubourg | :handshake: Contributed Code | |
14 | | -| experimental | :mag: Prototype | |
15 | | -| otap-dataflow | :hammer: Core Component | |
16 | | -| otel-arrow-rust | :handshake: Contributed Code | |
| 9 | +The `otap-dataflow` folder contains the project's primary dataflow |
| 10 | +engine for building OpenTelemetry pipelines with an Arrow-first |
| 11 | +approach. This component supports building and running the engine as a |
| 12 | +software library, suitable for embedding in other telemetry agents. |
| 13 | + |
| 14 | +This crate includes a CLI tool named `df_engine` for test and |
| 15 | +demonstration purposes including a set of core components. In this |
| 16 | +form, the engine is configured with YAML configuration expression the |
| 17 | +set of nodes and edges in the graph. The core components: OTLP |
| 18 | +receiver and exporter, OTAP receiver and exporter, batch and retry |
| 19 | +processors, debug processor, fake data generator, Parquet exporter, |
| 20 | +and a few more. |
| 21 | + |
| 22 | +The primary data type of the OTAP dataflow engine is OTAP records |
| 23 | +format, consisting of a set of Arrow record batches corresponding with |
| 24 | +elements in the OpenTelemetry data model, by signal. The OTAP pipeline |
| 25 | +also supports passing through OTLP bytes as literal data, with |
| 26 | +**direct conversion** between the OTAP records and OTLP bytes models. |
| 27 | + |
| 28 | +## OTel-Arrow Rust |
| 29 | + |
| 30 | +**[Sub-project README](./otel-arrow-rust/README.md)** |
| 31 | + |
| 32 | +The `otel-arrow-rust` folder contains the project's Rust reference |
| 33 | +implementation for OTel-Arrow, similar in nature to the [OTel-Arrow |
| 34 | +Golang library](../go/README.md) used by the project's Golang |
| 35 | +collector components. This library translates between the following |
| 36 | +representations of OpenTelemetry: |
| 37 | + |
| 38 | +- OTAP records: represented using [Apache Arrow (arrow-rs)][ARROW_RS] |
| 39 | + record batches |
| 40 | +- OTLP records: represented using [Prost][PROST_RS] message objects |
| 41 | +- OTAP stream: represented as batches of [Arrow IPC][ARROW_IPC] stream |
| 42 | +- OTLP bytes: represented as bytes of [OpenTelemetry Protocol |
| 43 | + (OTLP)][OTLP] data |
| 44 | + |
| 45 | +[ARROW_RS]: https://github.com/apache/arrow-rs/blob/main/README.md |
| 46 | +[PROST_RS]: https://github.com/tokio-rs/prost/blob/master/README.md |
| 47 | +[ARROW_IPC]: https://arrow.apache.org/docs/format/IPC.html |
| 48 | +[OTLP]: https://opentelemetry.io/docs/specs/otel/protocol/ |
| 49 | + |
| 50 | +This library a low-level interface for producing and consuming OTAP |
| 51 | +records. This library includes built-in support for batching and |
| 52 | +splitting of OTAP records. While this library is recommended any time |
| 53 | +you are converting between the representations listed above, note that |
| 54 | +the OTAP Dataflow engine includes an alternative that avoids |
| 55 | +materializing intermediate OTLP records. We recommend [PData |
| 56 | +Views](./otap-dataflow/crates/pdata-views/README.md) for producing and |
| 57 | +consuming OTLP bytes in the OTAP-Dataflow engine. |
| 58 | + |
| 59 | +## Experimental |
| 60 | + |
| 61 | +Here, find our experimental projects. As part of the OTel-Arrow Phase |
| 62 | +2 project scope ([project-phases](../docs/project-phases.md)), we are |
| 63 | +developing transform and filter capabilities based around the OTAP |
| 64 | +records representation. |
| 65 | + |
| 66 | +- [Query abstraction: intermediate representation for common OTTL and |
| 67 | + KQL phrases](./experimental/query_abstraction/README.md) |
| 68 | +- [Query engine: reference implementation for the abstraction |
| 69 | + layer](./experimental/query_engine/README.md) |
| 70 | +- [Parquet query examples: querying OTel-Arrow data in Parquet |
| 71 | + files using DataFusion](./parquet_query_examples/README.md) |
0 commit comments