@@ -80,10 +80,15 @@ event-listener.name=openlineage
8080openlineage-event-listener.transport.type=HTTP
8181openlineage-event-listener.transport.url=http://marquez:5000
8282openlineage-event-listener.transport.endpoint=/api/v1/lineage
83- openlineage-event-listener.trino.uri=http://trino-coordinator:8080
83+ openlineage-event-listener.trino.uri=https://trino-coordinator:8443
84+ openlineage-event-listener.namespace=trino-openlineage-demo
8485----
8586
86- See the {trino-openlineage-docs}[Trino OpenLineage event listener docs{external-link-icon}^] for details.
87+ `trino.uri` is Trino's own serving address; it names the *dataset* namespace, so pointing it at the same
88+ `trino-coordinator:8443` that Airflow uses lets both producers report the same tables under one namespace.
89+ `namespace` sets an explicit, colon-free *job* namespace - without it Marquez cannot parse the node ID of a
90+ Trino query job (its ID starts with a digit). See the {trino-openlineage-docs}[Trino OpenLineage event
91+ listener docs{external-link-icon}^] for details.
8792
8893*Airflow* only needs the provider pointed at Marquez, which is done with `envOverrides`:
8994
@@ -178,9 +183,12 @@ image::openlineage/job-details-customer-orders-2.png[Marquez job details for loa
178183With the Marquez UI still open at http://localhost:3000, use the namespace selector at the top to switch
179184between the namespaces that produced the lineage:
180185
181- * the Trino namespace (named after `openlineage-event-listener.trino.uri`, i.e. `http://trino-coordinator:8080`),
182- which contains the `tpch.tiny.*` and `memory.demo.*` datasets and the queries connecting them, and
183- * `airflow-openlineage-demo`, which contains the `openlineage_demo` DAG and its tasks.
186+ * `trino-openlineage-demo` - the Trino query jobs (one per executed statement), set via
187+ `openlineage-event-listener.namespace`, and
188+ * `trino://trino-coordinator:8443` - the datasets (`tpch.tiny.*` and `memory.demo.*`), named after the Trino
189+ coordinator's address. Both the Trino event listener and the Airflow SQL operator report the tables under
190+ this shared namespace, and
191+ * `airflow-openlineage-demo` - the `openlineage_demo` DAG and its tasks.
184192
185193Selecting the `memory.demo.customer_orders` dataset and expanding upstream shows the full graph back to
186194`tpch.tiny.customer` and `tpch.tiny.orders`, including column-level lineage for the individual queries:
@@ -189,9 +197,10 @@ image::openlineage/customer-orders-2.png[Marquez lineage graph tracing memory.de
189197
190198[NOTE]
191199====
192- Trino and Airflow name datasets independently, so a given table may appear under both the Trino namespace (from the
193- Trino event listener) and the Airflow namespace (from the SQL operator's extractor). This is expected - each producer
194- reports lineage from its own perspective.
200+ Trino and Airflow report lineage independently but, because `trino.uri` matches the address Airflow uses for its
201+ Trino connection, both name the tables under the same `trino://trino-coordinator:8443` namespace. Their lineage
202+ therefore converges on one shared set of dataset nodes: Trino contributes column-level detail per query, while
203+ Airflow contributes the task/DAG structure around the same tables.
195204====
196205
197206== Summary
0 commit comments