Observed something in the UI and upon looking at the endpoint response think this highlights something more.
Steps to reproduce:
Ran a script that created a DatasetEvent (from OpenLineage which reported the Option[T] data types. This event was manually emitted to the Marquez endpoint
Ran a spark job with OpenLineage's OpenLineageSparkListener to do some small data operation which appears to have reported the non-Option[T] data types. These events were automatically emitted to the Marquez endpoint.
Observations:
Both the Option[T] and non-Option[T] data types appear to be associated with the same schema definition and columns -- they were just additive -- not sure if this was intentional or not:
Only 1 reported schema exists:
In looking at the json payload that captures the table data we retrieve this:
Here, the schema facet was updated from the first supplied value to the new value (while keeping the other facets that were not sent automatically from spark intact -- which is great so we can keep those). The overwriting of the schema I can understand as that was provided from the spark job too. Would be great if the nullable flag was captured in the data types from the event emitted from OpenLineage -- the consideration for where the Option[T] types came from for the first call. However, the fields data has been added together, even with the same column names being used. Interestingly though the graph visual doesn't have these repeated.
What I would expect:
As the schema is being overwritten would think the fields would be updated too rather than added together. With the data types changing I could see this being captured in some versioned change. Perhaps though there might be some desire to have some additive data capture present within the code to merge schemas together in case multiple events are omitted that both contain partial schema definitions?
Think that the correct path forward with where things stand presently though is that we need to ignore the nullable flag on the data and not make Option[T] data types to represent this. Would be nice to have the possibility of missing data though captured in the schema.
Observed something in the UI and upon looking at the endpoint response think this highlights something more.
Steps to reproduce:
DatasetEvent
(from OpenLineage which reported theOption[T]
data types. This event was manually emitted to the Marquez endpointOpenLineageSparkListener
to do some small data operation which appears to have reported the non-Option[T]
data types. These events were automatically emitted to the Marquez endpoint.Observations:
Both the
Option[T]
and non-Option[T]
data types appear to be associated with the same schema definition and columns -- they were just additive -- not sure if this was intentional or not:Only 1 reported schema exists:
In looking at the json payload that captures the table data we retrieve this:
Here, the
schema facet
was updated from the first supplied value to the new value (while keeping the other facets that were not sent automatically from spark intact -- which is great so we can keep those). The overwriting of the schema I can understand as that was provided from the spark job too. Would be great if thenullable
flag was captured in the data types from the event emitted from OpenLineage -- the consideration for where theOption[T]
types came from for the first call. However, thefields
data has been added together, even with the same column names being used. Interestingly though the graph visual doesn't have these repeated.What I would expect:
As the schema is being overwritten would think the fields would be updated too rather than added together. With the data types changing I could see this being captured in some versioned change. Perhaps though there might be some desire to have some additive data capture present within the code to merge schemas together in case multiple events are omitted that both contain partial schema definitions?
Think that the correct path forward with where things stand presently though is that we need to ignore the nullable flag on the data and not make
Option[T]
data types to represent this. Would be nice to have the possibility of missing data though captured in the schema.