From 3038e139c5b0c9781d5c707531cd1f9c7fb0decc Mon Sep 17 00:00:00 2001 From: GitHub Action Website Snapshot <> Date: Wed, 6 Nov 2024 11:32:21 +0000 Subject: [PATCH] Generating new version 1.24.1 --- versioned_docs/version-1.24.1/before-ol.svg | 1 + .../version-1.24.1/client/_category_.json | 4 + .../client/java/_category_.json | 4 + .../client/java/configuration.md | 118 +++ .../version-1.24.1/client/java/java.md | 39 + .../client/java/mqz_job_complete.png | Bin 0 -> 227528 bytes .../client/java/mqz_job_running.png | Bin 0 -> 109124 bytes .../java/partials/java_circuit_breaker.md | 107 ++ .../java/partials/java_dynamic_env_vars.md | 163 +++ .../client/java/partials/java_metrics.md | 64 ++ .../java/partials/java_namespace_resolver.md | 141 +++ .../client/java/partials/java_transport.md | 795 +++++++++++++++ .../client/java/partials/s3_transport.md | 102 ++ .../version-1.24.1/client/java/usage.md | 368 +++++++ .../version-1.24.1/client/mqz_graph.png | Bin 0 -> 98507 bytes .../client/mqz_graph_example.png | Bin 0 -> 129927 bytes .../version-1.24.1/client/mqz_jobs.png | Bin 0 -> 163328 bytes .../version-1.24.1/client/python.md | 953 ++++++++++++++++++ versioned_docs/version-1.24.1/datamodel.svg | 1 + .../development/_category_.json | 4 + .../development/developing/_category.json | 8 + .../development/developing/developing.md | 48 + .../developing/java/_category_.json | 4 + .../developing/java/adding_metrics.md | 18 + .../development/developing/java/setup.md | 8 + .../java/troubleshooting/_category_.json | 4 + .../java/troubleshooting/logging.md | 315 ++++++ .../developing/python/_category_.json | 4 + .../python/api-reference/_category_.json | 4 + .../api-reference/openlineage.client.md | 8 + .../development/developing/python/setup.md | 41 + .../developing/python/tests/_category_.json | 4 + .../developing/python/tests/airflow.md | 180 ++++ .../developing/python/tests/client.md | 10 + .../developing/python/tests/common.md | 10 + .../developing/python/tests/dagster.md | 10 + .../python/troubleshooting/_category_.json | 5 + .../python/troubleshooting/logging.md | 290 ++++++ .../developing/spark/_category_.json | 4 + .../developing/spark/built_in_lineage.md | 269 +++++ .../development/developing/spark/setup.md | 56 + .../version-1.24.1/development/examples.md | 173 ++++ .../version-1.24.1/development/ol-proxy.md | 57 ++ versioned_docs/version-1.24.1/faq.md | 18 + .../version-1.24.1/guides/_category_.json | 4 + versioned_docs/version-1.24.1/guides/about.md | 15 + .../guides/airflow-backfill-dags.md | 197 ++++ .../guides/airflow-quickstart.md | 352 +++++++ .../guides/airflow_dev_setup.png | Bin 0 -> 50816 bytes .../version-1.24.1/guides/airflow_proxy.md | 281 ++++++ .../guides/airflow_trigger_dag.png | Bin 0 -> 10652 bytes .../version-1.24.1/guides/backfill.png | Bin 0 -> 5217 bytes versioned_docs/version-1.24.1/guides/dbt.md | 128 +++ .../docs/astro-current-lineage-view-job.png | Bin 0 -> 41094 bytes .../guides/docs/astro-job-failure.png | Bin 0 -> 74806 bytes .../docs/astro-lineage-view-dataset.png | Bin 0 -> 42424 bytes .../astro-lineage-view-job-successful.png | Bin 0 -> 111070 bytes .../guides/docs/astro-view-dags.png | Bin 0 -> 118762 bytes .../guides/docs/current-search-count.png | Bin 0 -> 39713 bytes .../version-1.24.1/guides/facets.md | 77 ++ .../version-1.24.1/guides/inter-dag-deps.png | Bin 0 -> 10367 bytes .../version-1.24.1/guides/job_failure.png | Bin 0 -> 117511 bytes .../version-1.24.1/guides/jupyter_home.png | Bin 0 -> 6561 bytes .../guides/jupyter_new_notebook.png | Bin 0 -> 10020 bytes .../guides/marquez_bash_jobs.png | Bin 0 -> 160012 bytes .../marquez_bigquery_dataset_latest.png | Bin 0 -> 32686 bytes .../version-1.24.1/guides/marquez_home.png | Bin 0 -> 17233 bytes .../guides/marquez_job_facets.png | Bin 0 -> 43606 bytes .../guides/marquez_job_graph.png | Bin 0 -> 22896 bytes .../guides/marquez_output_dataset_latest.png | Bin 0 -> 29751 bytes .../guides/marquez_output_dataset_version.png | Bin 0 -> 30584 bytes .../version-1.24.1/guides/spark-connector.md | 51 + versioned_docs/version-1.24.1/guides/spark.md | 201 ++++ versioned_docs/version-1.24.1/index.md | 65 ++ .../integrations/_category_.json | 4 + .../version-1.24.1/integrations/about.md | 55 + .../integrations/airflow/_category_.json | 8 + .../integrations/airflow/af-schematic.svg | 229 +++++ .../integrations/airflow/airflow.md | 52 + .../airflow/default-extractors.md | 369 +++++++ .../airflow/extractors/_category_.json | 4 + .../airflow/extractors/custom-extractors.md | 121 +++ .../airflow/extractors/extractor-testing.md | 109 ++ .../integrations/airflow/job-hierarchy.md | 22 + .../integrations/airflow/manual.md | 101 ++ .../integrations/airflow/older.md | 49 + .../airflow/preflight-check-dag.md | 338 +++++++ .../integrations/airflow/usage.md | 83 ++ .../version-1.24.1/integrations/dbt.md | 61 ++ .../version-1.24.1/integrations/flink.md | 138 +++ .../integrations/great-expectations.md | 86 ++ .../integrations/integrate-datasources.svg | 127 +++ .../integrations/integrate-pipelines.svg | 130 +++ .../integrations/spark/_category_.json | 4 + .../spark/configuration/_category_.json | 4 + .../spark/configuration/airflow.md | 33 + .../spark/configuration/circuit_breaker.md | 8 + .../spark/configuration/spark_conf.md | 26 + .../spark/configuration/transport.md | 8 + .../integrations/spark/configuration/usage.md | 127 +++ .../integrations/spark/extending.md | 232 +++++ .../integrations/spark/installation.md | 258 +++++ .../integrations/spark/job-hierarchy.md | 20 + .../integrations/spark/main_concept.md | 33 + .../integrations/spark/metrics.md | 28 + .../spark/quickstart/_category_.json | 4 + .../spark/quickstart/glue_settings.png | Bin 0 -> 142022 bytes .../spark/quickstart/jupyter_home.png | Bin 0 -> 8868 bytes .../spark/quickstart/jupyter_new_notebook.png | Bin 0 -> 14646 bytes .../spark/quickstart/quickstart_databricks.md | 70 ++ .../spark/quickstart/quickstart_glue.md | 45 + .../spark/quickstart/quickstart_local.md | 71 ++ .../spark/spark-job-creation.dot.png | Bin 0 -> 35513 bytes .../integrations/spark/spark.md | 16 + .../spark/spark_column_lineage.md | 94 ++ .../integrations/spark/testing.md | 94 ++ .../version-1.24.1/integrations/trino.md | 60 ++ versioned_docs/version-1.24.1/model.png | Bin 0 -> 21942 bytes versioned_docs/version-1.24.1/model.svg | 1 + .../version-1.24.1/releases/0_10_0.md | 29 + .../version-1.24.1/releases/0_11_0.md | 24 + .../version-1.24.1/releases/0_12_0.md | 26 + .../version-1.24.1/releases/0_13_0.md | 35 + .../version-1.24.1/releases/0_13_1.md | 12 + .../version-1.24.1/releases/0_14_0.md | 32 + .../version-1.24.1/releases/0_14_1.md | 10 + .../version-1.24.1/releases/0_15_1.md | 36 + .../version-1.24.1/releases/0_16_1.md | 40 + .../version-1.24.1/releases/0_17_0.md | 48 + .../version-1.24.1/releases/0_18_0.md | 30 + .../version-1.24.1/releases/0_19_2.md | 36 + .../version-1.24.1/releases/0_1_0.md | 15 + .../version-1.24.1/releases/0_20_4.md | 38 + .../version-1.24.1/releases/0_20_6.md | 20 + .../version-1.24.1/releases/0_21_1.md | 44 + .../version-1.24.1/releases/0_22_0.md | 36 + .../version-1.24.1/releases/0_23_0.md | 28 + .../version-1.24.1/releases/0_24_0.md | 22 + .../version-1.24.1/releases/0_25_0.md | 20 + .../version-1.24.1/releases/0_26_0.md | 20 + .../version-1.24.1/releases/0_27_1.md | 16 + .../version-1.24.1/releases/0_27_2.md | 10 + .../version-1.24.1/releases/0_28_0.md | 16 + .../version-1.24.1/releases/0_29_2.md | 23 + .../version-1.24.1/releases/0_2_0.md | 26 + .../version-1.24.1/releases/0_2_1.md | 10 + .../version-1.24.1/releases/0_2_2.md | 14 + .../version-1.24.1/releases/0_2_3.md | 10 + .../version-1.24.1/releases/0_30_1.md | 40 + .../version-1.24.1/releases/0_3_0.md | 19 + .../version-1.24.1/releases/0_3_1.md | 9 + .../version-1.24.1/releases/0_4_0.md | 24 + .../version-1.24.1/releases/0_5_1.md | 15 + .../version-1.24.1/releases/0_5_2.md | 22 + .../version-1.24.1/releases/0_6_0.md | 21 + .../version-1.24.1/releases/0_6_1.md | 10 + .../version-1.24.1/releases/0_6_2.md | 16 + .../version-1.24.1/releases/0_7_1.md | 23 + .../version-1.24.1/releases/0_8_1.md | 15 + .../version-1.24.1/releases/0_8_2.md | 16 + .../version-1.24.1/releases/0_9_0.md | 29 + .../version-1.24.1/releases/1_0_0.md | 26 + .../version-1.24.1/releases/1_10_2.md | 46 + .../version-1.24.1/releases/1_11_3.md | 50 + .../version-1.24.1/releases/1_12_0.md | 29 + .../version-1.24.1/releases/1_13_1.md | 38 + .../version-1.24.1/releases/1_14_0.md | 38 + .../version-1.24.1/releases/1_15_0.md | 41 + .../version-1.24.1/releases/1_16_0.md | 16 + .../version-1.24.1/releases/1_17_1.md | 56 + .../version-1.24.1/releases/1_18_0.md | 52 + .../version-1.24.1/releases/1_19_0.md | 31 + .../version-1.24.1/releases/1_1_0.md | 31 + .../version-1.24.1/releases/1_20_5.md | 50 + .../version-1.24.1/releases/1_21_1.md | 24 + .../version-1.24.1/releases/1_22_0.md | 24 + .../version-1.24.1/releases/1_2_2.md | 35 + .../version-1.24.1/releases/1_3_1.md | 24 + .../version-1.24.1/releases/1_4_1.md | 16 + .../version-1.24.1/releases/1_5_0.md | 30 + .../version-1.24.1/releases/1_6_2.md | 28 + .../version-1.24.1/releases/1_7_0.md | 35 + .../version-1.24.1/releases/1_8_0.md | 42 + .../version-1.24.1/releases/1_9_1.md | 69 ++ .../version-1.24.1/releases/_category_.json | 5 + versioned_docs/version-1.24.1/scope.svg | 1 + .../version-1.24.1/spec/_category_.json | 4 + .../spec/facets/_category_.json | 4 + .../spec/facets/custom-facets.md | 541 ++++++++++ .../spec/facets/custom-facets.png | Bin 0 -> 263352 bytes .../facets/dataset-facets/_category_.json | 4 + .../dataset-facets/column_lineage_facet.md | 262 +++++ .../dataset-facets/column_lineage_facet.svg | 59 ++ .../dataset-facets/data_quality_assertions.md | 35 + .../spec/facets/dataset-facets/data_source.md | 25 + .../facets/dataset-facets/dataset-facets.md | 36 + .../input-dataset-facets/_category_.json | 4 + .../data_quality_metrics.md | 70 ++ .../dataset-facets/lifecycle_state_change.md | 44 + .../output-dataset-facets/_category_.json | 4 + .../output_statistics.md | 26 + .../spec/facets/dataset-facets/ownership.md | 30 + .../spec/facets/dataset-facets/schema.md | 115 +++ .../spec/facets/dataset-facets/storage.md | 25 + .../spec/facets/dataset-facets/symlinks.md | 28 + .../facets/dataset-facets/version_facet.md | 24 + .../version-1.24.1/spec/facets/facets.md | 96 ++ .../spec/facets/job-facets/_category_.json | 4 + .../spec/facets/job-facets/documentation.md | 28 + .../spec/facets/job-facets/job-facets.md | 7 + .../spec/facets/job-facets/job-type.md | 44 + .../spec/facets/job-facets/ownership.md | 34 + .../facets/job-facets/source-code-location.md | 34 + .../spec/facets/job-facets/source-code.md | 29 + .../spec/facets/job-facets/sql.md | 29 + .../spec/facets/run-facets/_category_.json | 4 + .../run-facets/environment_variables.md | 13 + .../spec/facets/run-facets/error_message.md | 31 + .../spec/facets/run-facets/external_query.md | 30 + .../spec/facets/run-facets/nominal_time.md | 30 + .../spec/facets/run-facets/parent_run.md | 34 + .../facets/run-facets/processing_engine.md | 16 + .../spec/facets/run-facets/run-facets.md | 7 + .../spec/job-hierarchy-events.png | Bin 0 -> 32418 bytes .../spec/job-hierarchy-jobs.png | Bin 0 -> 35866 bytes .../version-1.24.1/spec/job-hierarchy.md | 49 + .../spec/naming-correlations.svg | 85 ++ versioned_docs/version-1.24.1/spec/naming.md | 79 ++ .../version-1.24.1/spec/object-model.md | 94 ++ .../version-1.24.1/spec/object-model.svg | 60 ++ .../version-1.24.1/spec/producers.md | 13 + .../version-1.24.1/spec/run-cycle-batch.svg | 48 + .../version-1.24.1/spec/run-cycle-stream.svg | 53 + .../version-1.24.1/spec/run-cycle.md | 48 + .../version-1.24.1/spec/run-life-cycle.svg | 4 + versioned_docs/version-1.24.1/spec/schemas.md | 47 + .../version-1.24.1/where-ol-fits.svg | 146 +++ versioned_docs/version-1.24.1/with-ol.svg | 1 + .../version-1.24.1-sidebars.json | 8 + versions.json | 1 + 240 files changed, 13473 insertions(+) create mode 100644 versioned_docs/version-1.24.1/before-ol.svg create mode 100644 versioned_docs/version-1.24.1/client/_category_.json create mode 100644 versioned_docs/version-1.24.1/client/java/_category_.json create mode 100644 versioned_docs/version-1.24.1/client/java/configuration.md create mode 100644 versioned_docs/version-1.24.1/client/java/java.md create mode 100644 versioned_docs/version-1.24.1/client/java/mqz_job_complete.png create mode 100644 versioned_docs/version-1.24.1/client/java/mqz_job_running.png create mode 100644 versioned_docs/version-1.24.1/client/java/partials/java_circuit_breaker.md create mode 100644 versioned_docs/version-1.24.1/client/java/partials/java_dynamic_env_vars.md create mode 100644 versioned_docs/version-1.24.1/client/java/partials/java_metrics.md create mode 100644 versioned_docs/version-1.24.1/client/java/partials/java_namespace_resolver.md create mode 100644 versioned_docs/version-1.24.1/client/java/partials/java_transport.md create mode 100644 versioned_docs/version-1.24.1/client/java/partials/s3_transport.md create mode 100644 versioned_docs/version-1.24.1/client/java/usage.md create mode 100644 versioned_docs/version-1.24.1/client/mqz_graph.png create mode 100644 versioned_docs/version-1.24.1/client/mqz_graph_example.png create mode 100644 versioned_docs/version-1.24.1/client/mqz_jobs.png create mode 100644 versioned_docs/version-1.24.1/client/python.md create mode 100644 versioned_docs/version-1.24.1/datamodel.svg create mode 100644 versioned_docs/version-1.24.1/development/_category_.json create mode 100644 versioned_docs/version-1.24.1/development/developing/_category.json create mode 100644 versioned_docs/version-1.24.1/development/developing/developing.md create mode 100644 versioned_docs/version-1.24.1/development/developing/java/_category_.json create mode 100644 versioned_docs/version-1.24.1/development/developing/java/adding_metrics.md create mode 100644 versioned_docs/version-1.24.1/development/developing/java/setup.md create mode 100644 versioned_docs/version-1.24.1/development/developing/java/troubleshooting/_category_.json create mode 100644 versioned_docs/version-1.24.1/development/developing/java/troubleshooting/logging.md create mode 100644 versioned_docs/version-1.24.1/development/developing/python/_category_.json create mode 100644 versioned_docs/version-1.24.1/development/developing/python/api-reference/_category_.json create mode 100644 versioned_docs/version-1.24.1/development/developing/python/api-reference/openlineage.client.md create mode 100644 versioned_docs/version-1.24.1/development/developing/python/setup.md create mode 100644 versioned_docs/version-1.24.1/development/developing/python/tests/_category_.json create mode 100644 versioned_docs/version-1.24.1/development/developing/python/tests/airflow.md create mode 100644 versioned_docs/version-1.24.1/development/developing/python/tests/client.md create mode 100644 versioned_docs/version-1.24.1/development/developing/python/tests/common.md create mode 100644 versioned_docs/version-1.24.1/development/developing/python/tests/dagster.md create mode 100644 versioned_docs/version-1.24.1/development/developing/python/troubleshooting/_category_.json create mode 100644 versioned_docs/version-1.24.1/development/developing/python/troubleshooting/logging.md create mode 100644 versioned_docs/version-1.24.1/development/developing/spark/_category_.json create mode 100644 versioned_docs/version-1.24.1/development/developing/spark/built_in_lineage.md create mode 100644 versioned_docs/version-1.24.1/development/developing/spark/setup.md create mode 100644 versioned_docs/version-1.24.1/development/examples.md create mode 100644 versioned_docs/version-1.24.1/development/ol-proxy.md create mode 100644 versioned_docs/version-1.24.1/faq.md create mode 100644 versioned_docs/version-1.24.1/guides/_category_.json create mode 100644 versioned_docs/version-1.24.1/guides/about.md create mode 100644 versioned_docs/version-1.24.1/guides/airflow-backfill-dags.md create mode 100644 versioned_docs/version-1.24.1/guides/airflow-quickstart.md create mode 100644 versioned_docs/version-1.24.1/guides/airflow_dev_setup.png create mode 100644 versioned_docs/version-1.24.1/guides/airflow_proxy.md create mode 100644 versioned_docs/version-1.24.1/guides/airflow_trigger_dag.png create mode 100644 versioned_docs/version-1.24.1/guides/backfill.png create mode 100644 versioned_docs/version-1.24.1/guides/dbt.md create mode 100644 versioned_docs/version-1.24.1/guides/docs/astro-current-lineage-view-job.png create mode 100644 versioned_docs/version-1.24.1/guides/docs/astro-job-failure.png create mode 100644 versioned_docs/version-1.24.1/guides/docs/astro-lineage-view-dataset.png create mode 100644 versioned_docs/version-1.24.1/guides/docs/astro-lineage-view-job-successful.png create mode 100644 versioned_docs/version-1.24.1/guides/docs/astro-view-dags.png create mode 100644 versioned_docs/version-1.24.1/guides/docs/current-search-count.png create mode 100644 versioned_docs/version-1.24.1/guides/facets.md create mode 100644 versioned_docs/version-1.24.1/guides/inter-dag-deps.png create mode 100644 versioned_docs/version-1.24.1/guides/job_failure.png create mode 100644 versioned_docs/version-1.24.1/guides/jupyter_home.png create mode 100644 versioned_docs/version-1.24.1/guides/jupyter_new_notebook.png create mode 100644 versioned_docs/version-1.24.1/guides/marquez_bash_jobs.png create mode 100644 versioned_docs/version-1.24.1/guides/marquez_bigquery_dataset_latest.png create mode 100644 versioned_docs/version-1.24.1/guides/marquez_home.png create mode 100644 versioned_docs/version-1.24.1/guides/marquez_job_facets.png create mode 100644 versioned_docs/version-1.24.1/guides/marquez_job_graph.png create mode 100644 versioned_docs/version-1.24.1/guides/marquez_output_dataset_latest.png create mode 100644 versioned_docs/version-1.24.1/guides/marquez_output_dataset_version.png create mode 100644 versioned_docs/version-1.24.1/guides/spark-connector.md create mode 100644 versioned_docs/version-1.24.1/guides/spark.md create mode 100644 versioned_docs/version-1.24.1/index.md create mode 100644 versioned_docs/version-1.24.1/integrations/_category_.json create mode 100644 versioned_docs/version-1.24.1/integrations/about.md create mode 100644 versioned_docs/version-1.24.1/integrations/airflow/_category_.json create mode 100644 versioned_docs/version-1.24.1/integrations/airflow/af-schematic.svg create mode 100644 versioned_docs/version-1.24.1/integrations/airflow/airflow.md create mode 100644 versioned_docs/version-1.24.1/integrations/airflow/default-extractors.md create mode 100644 versioned_docs/version-1.24.1/integrations/airflow/extractors/_category_.json create mode 100644 versioned_docs/version-1.24.1/integrations/airflow/extractors/custom-extractors.md create mode 100644 versioned_docs/version-1.24.1/integrations/airflow/extractors/extractor-testing.md create mode 100644 versioned_docs/version-1.24.1/integrations/airflow/job-hierarchy.md create mode 100644 versioned_docs/version-1.24.1/integrations/airflow/manual.md create mode 100644 versioned_docs/version-1.24.1/integrations/airflow/older.md create mode 100644 versioned_docs/version-1.24.1/integrations/airflow/preflight-check-dag.md create mode 100644 versioned_docs/version-1.24.1/integrations/airflow/usage.md create mode 100644 versioned_docs/version-1.24.1/integrations/dbt.md create mode 100644 versioned_docs/version-1.24.1/integrations/flink.md create mode 100644 versioned_docs/version-1.24.1/integrations/great-expectations.md create mode 100644 versioned_docs/version-1.24.1/integrations/integrate-datasources.svg create mode 100644 versioned_docs/version-1.24.1/integrations/integrate-pipelines.svg create mode 100644 versioned_docs/version-1.24.1/integrations/spark/_category_.json create mode 100644 versioned_docs/version-1.24.1/integrations/spark/configuration/_category_.json create mode 100644 versioned_docs/version-1.24.1/integrations/spark/configuration/airflow.md create mode 100644 versioned_docs/version-1.24.1/integrations/spark/configuration/circuit_breaker.md create mode 100644 versioned_docs/version-1.24.1/integrations/spark/configuration/spark_conf.md create mode 100644 versioned_docs/version-1.24.1/integrations/spark/configuration/transport.md create mode 100644 versioned_docs/version-1.24.1/integrations/spark/configuration/usage.md create mode 100644 versioned_docs/version-1.24.1/integrations/spark/extending.md create mode 100644 versioned_docs/version-1.24.1/integrations/spark/installation.md create mode 100644 versioned_docs/version-1.24.1/integrations/spark/job-hierarchy.md create mode 100644 versioned_docs/version-1.24.1/integrations/spark/main_concept.md create mode 100644 versioned_docs/version-1.24.1/integrations/spark/metrics.md create mode 100644 versioned_docs/version-1.24.1/integrations/spark/quickstart/_category_.json create mode 100644 versioned_docs/version-1.24.1/integrations/spark/quickstart/glue_settings.png create mode 100644 versioned_docs/version-1.24.1/integrations/spark/quickstart/jupyter_home.png create mode 100644 versioned_docs/version-1.24.1/integrations/spark/quickstart/jupyter_new_notebook.png create mode 100644 versioned_docs/version-1.24.1/integrations/spark/quickstart/quickstart_databricks.md create mode 100644 versioned_docs/version-1.24.1/integrations/spark/quickstart/quickstart_glue.md create mode 100644 versioned_docs/version-1.24.1/integrations/spark/quickstart/quickstart_local.md create mode 100644 versioned_docs/version-1.24.1/integrations/spark/spark-job-creation.dot.png create mode 100644 versioned_docs/version-1.24.1/integrations/spark/spark.md create mode 100644 versioned_docs/version-1.24.1/integrations/spark/spark_column_lineage.md create mode 100644 versioned_docs/version-1.24.1/integrations/spark/testing.md create mode 100644 versioned_docs/version-1.24.1/integrations/trino.md create mode 100644 versioned_docs/version-1.24.1/model.png create mode 100644 versioned_docs/version-1.24.1/model.svg create mode 100644 versioned_docs/version-1.24.1/releases/0_10_0.md create mode 100644 versioned_docs/version-1.24.1/releases/0_11_0.md create mode 100644 versioned_docs/version-1.24.1/releases/0_12_0.md create mode 100644 versioned_docs/version-1.24.1/releases/0_13_0.md create mode 100644 versioned_docs/version-1.24.1/releases/0_13_1.md create mode 100644 versioned_docs/version-1.24.1/releases/0_14_0.md create mode 100644 versioned_docs/version-1.24.1/releases/0_14_1.md create mode 100644 versioned_docs/version-1.24.1/releases/0_15_1.md create mode 100644 versioned_docs/version-1.24.1/releases/0_16_1.md create mode 100644 versioned_docs/version-1.24.1/releases/0_17_0.md create mode 100644 versioned_docs/version-1.24.1/releases/0_18_0.md create mode 100644 versioned_docs/version-1.24.1/releases/0_19_2.md create mode 100644 versioned_docs/version-1.24.1/releases/0_1_0.md create mode 100644 versioned_docs/version-1.24.1/releases/0_20_4.md create mode 100644 versioned_docs/version-1.24.1/releases/0_20_6.md create mode 100644 versioned_docs/version-1.24.1/releases/0_21_1.md create mode 100644 versioned_docs/version-1.24.1/releases/0_22_0.md create mode 100644 versioned_docs/version-1.24.1/releases/0_23_0.md create mode 100644 versioned_docs/version-1.24.1/releases/0_24_0.md create mode 100644 versioned_docs/version-1.24.1/releases/0_25_0.md create mode 100644 versioned_docs/version-1.24.1/releases/0_26_0.md create mode 100644 versioned_docs/version-1.24.1/releases/0_27_1.md create mode 100644 versioned_docs/version-1.24.1/releases/0_27_2.md create mode 100644 versioned_docs/version-1.24.1/releases/0_28_0.md create mode 100644 versioned_docs/version-1.24.1/releases/0_29_2.md create mode 100644 versioned_docs/version-1.24.1/releases/0_2_0.md create mode 100644 versioned_docs/version-1.24.1/releases/0_2_1.md create mode 100644 versioned_docs/version-1.24.1/releases/0_2_2.md create mode 100644 versioned_docs/version-1.24.1/releases/0_2_3.md create mode 100644 versioned_docs/version-1.24.1/releases/0_30_1.md create mode 100644 versioned_docs/version-1.24.1/releases/0_3_0.md create mode 100644 versioned_docs/version-1.24.1/releases/0_3_1.md create mode 100644 versioned_docs/version-1.24.1/releases/0_4_0.md create mode 100644 versioned_docs/version-1.24.1/releases/0_5_1.md create mode 100644 versioned_docs/version-1.24.1/releases/0_5_2.md create mode 100644 versioned_docs/version-1.24.1/releases/0_6_0.md create mode 100644 versioned_docs/version-1.24.1/releases/0_6_1.md create mode 100644 versioned_docs/version-1.24.1/releases/0_6_2.md create mode 100644 versioned_docs/version-1.24.1/releases/0_7_1.md create mode 100644 versioned_docs/version-1.24.1/releases/0_8_1.md create mode 100644 versioned_docs/version-1.24.1/releases/0_8_2.md create mode 100644 versioned_docs/version-1.24.1/releases/0_9_0.md create mode 100644 versioned_docs/version-1.24.1/releases/1_0_0.md create mode 100644 versioned_docs/version-1.24.1/releases/1_10_2.md create mode 100644 versioned_docs/version-1.24.1/releases/1_11_3.md create mode 100644 versioned_docs/version-1.24.1/releases/1_12_0.md create mode 100644 versioned_docs/version-1.24.1/releases/1_13_1.md create mode 100644 versioned_docs/version-1.24.1/releases/1_14_0.md create mode 100644 versioned_docs/version-1.24.1/releases/1_15_0.md create mode 100644 versioned_docs/version-1.24.1/releases/1_16_0.md create mode 100644 versioned_docs/version-1.24.1/releases/1_17_1.md create mode 100644 versioned_docs/version-1.24.1/releases/1_18_0.md create mode 100644 versioned_docs/version-1.24.1/releases/1_19_0.md create mode 100644 versioned_docs/version-1.24.1/releases/1_1_0.md create mode 100644 versioned_docs/version-1.24.1/releases/1_20_5.md create mode 100644 versioned_docs/version-1.24.1/releases/1_21_1.md create mode 100644 versioned_docs/version-1.24.1/releases/1_22_0.md create mode 100644 versioned_docs/version-1.24.1/releases/1_2_2.md create mode 100644 versioned_docs/version-1.24.1/releases/1_3_1.md create mode 100644 versioned_docs/version-1.24.1/releases/1_4_1.md create mode 100644 versioned_docs/version-1.24.1/releases/1_5_0.md create mode 100644 versioned_docs/version-1.24.1/releases/1_6_2.md create mode 100644 versioned_docs/version-1.24.1/releases/1_7_0.md create mode 100644 versioned_docs/version-1.24.1/releases/1_8_0.md create mode 100644 versioned_docs/version-1.24.1/releases/1_9_1.md create mode 100644 versioned_docs/version-1.24.1/releases/_category_.json create mode 100644 versioned_docs/version-1.24.1/scope.svg create mode 100644 versioned_docs/version-1.24.1/spec/_category_.json create mode 100644 versioned_docs/version-1.24.1/spec/facets/_category_.json create mode 100644 versioned_docs/version-1.24.1/spec/facets/custom-facets.md create mode 100644 versioned_docs/version-1.24.1/spec/facets/custom-facets.png create mode 100644 versioned_docs/version-1.24.1/spec/facets/dataset-facets/_category_.json create mode 100644 versioned_docs/version-1.24.1/spec/facets/dataset-facets/column_lineage_facet.md create mode 100644 versioned_docs/version-1.24.1/spec/facets/dataset-facets/column_lineage_facet.svg create mode 100644 versioned_docs/version-1.24.1/spec/facets/dataset-facets/data_quality_assertions.md create mode 100644 versioned_docs/version-1.24.1/spec/facets/dataset-facets/data_source.md create mode 100644 versioned_docs/version-1.24.1/spec/facets/dataset-facets/dataset-facets.md create mode 100644 versioned_docs/version-1.24.1/spec/facets/dataset-facets/input-dataset-facets/_category_.json create mode 100644 versioned_docs/version-1.24.1/spec/facets/dataset-facets/input-dataset-facets/data_quality_metrics.md create mode 100644 versioned_docs/version-1.24.1/spec/facets/dataset-facets/lifecycle_state_change.md create mode 100644 versioned_docs/version-1.24.1/spec/facets/dataset-facets/output-dataset-facets/_category_.json create mode 100644 versioned_docs/version-1.24.1/spec/facets/dataset-facets/output-dataset-facets/output_statistics.md create mode 100644 versioned_docs/version-1.24.1/spec/facets/dataset-facets/ownership.md create mode 100644 versioned_docs/version-1.24.1/spec/facets/dataset-facets/schema.md create mode 100644 versioned_docs/version-1.24.1/spec/facets/dataset-facets/storage.md create mode 100644 versioned_docs/version-1.24.1/spec/facets/dataset-facets/symlinks.md create mode 100644 versioned_docs/version-1.24.1/spec/facets/dataset-facets/version_facet.md create mode 100644 versioned_docs/version-1.24.1/spec/facets/facets.md create mode 100644 versioned_docs/version-1.24.1/spec/facets/job-facets/_category_.json create mode 100644 versioned_docs/version-1.24.1/spec/facets/job-facets/documentation.md create mode 100644 versioned_docs/version-1.24.1/spec/facets/job-facets/job-facets.md create mode 100644 versioned_docs/version-1.24.1/spec/facets/job-facets/job-type.md create mode 100644 versioned_docs/version-1.24.1/spec/facets/job-facets/ownership.md create mode 100644 versioned_docs/version-1.24.1/spec/facets/job-facets/source-code-location.md create mode 100644 versioned_docs/version-1.24.1/spec/facets/job-facets/source-code.md create mode 100644 versioned_docs/version-1.24.1/spec/facets/job-facets/sql.md create mode 100644 versioned_docs/version-1.24.1/spec/facets/run-facets/_category_.json create mode 100644 versioned_docs/version-1.24.1/spec/facets/run-facets/environment_variables.md create mode 100644 versioned_docs/version-1.24.1/spec/facets/run-facets/error_message.md create mode 100644 versioned_docs/version-1.24.1/spec/facets/run-facets/external_query.md create mode 100644 versioned_docs/version-1.24.1/spec/facets/run-facets/nominal_time.md create mode 100644 versioned_docs/version-1.24.1/spec/facets/run-facets/parent_run.md create mode 100644 versioned_docs/version-1.24.1/spec/facets/run-facets/processing_engine.md create mode 100644 versioned_docs/version-1.24.1/spec/facets/run-facets/run-facets.md create mode 100644 versioned_docs/version-1.24.1/spec/job-hierarchy-events.png create mode 100644 versioned_docs/version-1.24.1/spec/job-hierarchy-jobs.png create mode 100644 versioned_docs/version-1.24.1/spec/job-hierarchy.md create mode 100644 versioned_docs/version-1.24.1/spec/naming-correlations.svg create mode 100644 versioned_docs/version-1.24.1/spec/naming.md create mode 100644 versioned_docs/version-1.24.1/spec/object-model.md create mode 100644 versioned_docs/version-1.24.1/spec/object-model.svg create mode 100644 versioned_docs/version-1.24.1/spec/producers.md create mode 100644 versioned_docs/version-1.24.1/spec/run-cycle-batch.svg create mode 100644 versioned_docs/version-1.24.1/spec/run-cycle-stream.svg create mode 100644 versioned_docs/version-1.24.1/spec/run-cycle.md create mode 100644 versioned_docs/version-1.24.1/spec/run-life-cycle.svg create mode 100644 versioned_docs/version-1.24.1/spec/schemas.md create mode 100644 versioned_docs/version-1.24.1/where-ol-fits.svg create mode 100644 versioned_docs/version-1.24.1/with-ol.svg create mode 100644 versioned_sidebars/version-1.24.1-sidebars.json diff --git a/versioned_docs/version-1.24.1/before-ol.svg b/versioned_docs/version-1.24.1/before-ol.svg new file mode 100644 index 0000000..a36cbbc --- /dev/null +++ b/versioned_docs/version-1.24.1/before-ol.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/client/_category_.json b/versioned_docs/version-1.24.1/client/_category_.json new file mode 100644 index 0000000..2aa263f --- /dev/null +++ b/versioned_docs/version-1.24.1/client/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Client Libraries", + "position": 4 +} diff --git a/versioned_docs/version-1.24.1/client/java/_category_.json b/versioned_docs/version-1.24.1/client/java/_category_.json new file mode 100644 index 0000000..8360ca5 --- /dev/null +++ b/versioned_docs/version-1.24.1/client/java/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Java", + "position": 1 +} diff --git a/versioned_docs/version-1.24.1/client/java/configuration.md b/versioned_docs/version-1.24.1/client/java/configuration.md new file mode 100644 index 0000000..5911391 --- /dev/null +++ b/versioned_docs/version-1.24.1/client/java/configuration.md @@ -0,0 +1,118 @@ +--- +sidebar_position: 2 +title: Configuration +--- + +We recommend configuring the client with an `openlineage.yml` file that contains all the +details of how to connect to your OpenLineage backend. + +See [example configurations.](#transports) + +You can make this file available to the client in three ways (the list also presents precedence of the configuration): + +1. Set an `OPENLINEAGE_CONFIG` environment variable to a file path: `OPENLINEAGE_CONFIG=path/to/openlineage.yml`. +2. Place an `openlineage.yml` in the user's current working directory. +3. Place an `openlineage.yml` under `.openlineage/` in the user's home directory (`~/.openlineage/openlineage.yml`). + +## Environment Variables + +The following environment variables are available: + +| Name | Description | Since | +|----------------------|-----------------------------------------------------------------------------|-------| +| OPENLINEAGE_CONFIG | The path to the YAML configuration file. Example: `path/to/openlineage.yml` | | +| OPENLINEAGE_DISABLED | When `true`, OpenLineage will not emit events. | 0.9.0 | + +You can also configure the client with dynamic environment variables. + +import DynamicEnvVars from './partials/java_dynamic_env_vars.md'; + + + +## Facets Configuration + +In YAML configuration file you can also disable facets to filter them out from the OpenLineage event. + +*YAML Configuration* + +```yaml +transport: + type: console +facets: + spark_unknown: + disabled: true + spark: + logicalPlan: + disabled: true +``` + +### Deprecated syntax + +The following syntax is deprecated and soon will be removed: + +```yaml +transport: + type: console +facets: + disabled: + - spark_unknown + - spark.logicalPlan +``` + +The rationale behind deprecation is that some of the facets were disabled by default in some integrations. When we added +something extra but didn't include the defaults, they were unintentionally enabled. + +## Transports + +import Transports from './partials/java_transport.md'; + + + +### Error Handling via Transport + +```java +// Connect to http://localhost:5000 +OpenLineageClient client = OpenLineageClient.builder() + .transport( + HttpTransport.builder() + .uri("http://localhost:5000") + .apiKey("f38d2189-c603-4b46-bdea-e573a3b5a7d5") + .build()) + .registerErrorHandler(new EmitErrorHandler() { + @Override + public void handleError(Throwable throwable) { + // Handle emit error here + } + }).build(); +``` + +### Defining Your Own Transport + +```java +OpenLineageClient client = OpenLineageClient.builder() + .transport( + new MyTransport() { + @Override + public void emit(OpenLineage.RunEvent runEvent) { + // Add emit logic here + } + }).build(); +``` + +## Circuit Breakers + +import CircuitBreakers from './partials/java_circuit_breaker.md'; + + + +## Metrics + +import Metrics from './partials/java_metrics.md'; + + + +## Dataset Namespace Resolver + +import DatasetNamespaceResolver from './partials/java_namespace_resolver.md'; + + diff --git a/versioned_docs/version-1.24.1/client/java/java.md b/versioned_docs/version-1.24.1/client/java/java.md new file mode 100644 index 0000000..3792e0b --- /dev/null +++ b/versioned_docs/version-1.24.1/client/java/java.md @@ -0,0 +1,39 @@ +--- +sidebar_position: 5 +--- + +# Java + +## Overview + +The OpenLineage Java is a SDK for Java programming language that users can use to generate and emit OpenLineage events to OpenLineage backends. +The core data structures currently offered by the client are the `RunEvent`, `RunState`, `Run`, `Job`, `Dataset`, +and `Transport` classes, along with various `Facets` that can come under run, job, and dataset. + +There are various [transport classes](#transports) that the library provides that carry the lineage events into various target endpoints (e.g. HTTP). + +You can also use the Java client to create your own custom integrations. + +## Installation + +Java client is provided as library that can either be imported into your Java project using Maven or Gradle. + +Maven: + +```xml + + io.openlineage + openlineage-java + ${OPENLINEAGE_VERSION} + +``` + +or Gradle: + +```groovy +implementation("io.openlineage:openlineage-java:${OPENLINEAGE_VERSION}") +``` + +For more information on the available versions of the `openlineage-java`, +please refer to the [maven repository](https://search.maven.org/artifact/io.openlineage/openlineage-java). + diff --git a/versioned_docs/version-1.24.1/client/java/mqz_job_complete.png b/versioned_docs/version-1.24.1/client/java/mqz_job_complete.png new file mode 100644 index 0000000000000000000000000000000000000000..f412c5e43dd0fcfe93b7bbed4f9db0dd50c8ff4b GIT binary patch literal 227528 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

; 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%0Ao{OQ{FKn~~J5sKIA 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 literal 0 HcmV?d00001 diff --git a/versioned_docs/version-1.24.1/client/java/mqz_job_running.png b/versioned_docs/version-1.24.1/client/java/mqz_job_running.png new file mode 100644 index 0000000000000000000000000000000000000000..ff2ad0843675806c7655f4b080c4420b96ff9744 GIT binary patch literal 109124 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 Hhh_gC#mU9N literal 0 HcmV?d00001 diff --git a/versioned_docs/version-1.24.1/client/java/partials/java_circuit_breaker.md b/versioned_docs/version-1.24.1/client/java/partials/java_circuit_breaker.md new file mode 100644 index 0000000..059afc9 --- /dev/null +++ b/versioned_docs/version-1.24.1/client/java/partials/java_circuit_breaker.md @@ -0,0 +1,107 @@ +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +:::info +This feature is available in OpenLineage versions >= 1.9.0. +::: + +To prevent from over-instrumentation OpenLineage integration provides a circuit breaker mechanism +that stops OpenLineage from creating, serializing and sending OpenLineage events. + +### Simple Memory Circuit Breaker + +Simple circuit breaker which is working based only on free memory within JVM. Configuration should +contain free memory threshold limit (percentage). Default value is `20%`. The circuit breaker +will close within first call if free memory is low. `circuitCheckIntervalInMillis` parameter is used +to configure a frequency circuit breaker is called. Default value is `1000ms`, when no entry in config. +`timeoutInSeconds` is optional. If set, OpenLineage code execution is terminated when a timeout +is reached (added in version 1.13). + + + + +```yaml +circuitBreaker: + type: simpleMemory + memoryThreshold: 20 + circuitCheckIntervalInMillis: 1000 + timeoutInSeconds: 90 +``` + + + +| Parameter | Definition | Example | +--------------------------------------|----------------------------------------------------------------|-------------- +| spark.openlineage.circuitBreaker.type | Circuit breaker type selected | simpleMemory | +| spark.openlineage.circuitBreaker.memoryThreshold | Memory threshold | 20 | +| spark.openlineage.circuitBreaker.circuitCheckIntervalInMillis | Frequency of checking circuit breaker | 1000 | +| spark.openlineage.circuitBreaker.timeoutInSeconds | Optional timeout for OpenLineage execution (Since version 1.13)| 90 | + + + + +| Parameter | Definition | Example | +--------------------------------------|---------------------------------------------|------------- +| openlineage.circuitBreaker.type | Circuit breaker type selected | simpleMemory | +| openlineage.circuitBreaker.memoryThreshold | Memory threshold | 20 | +| openlineage.circuitBreaker.circuitCheckIntervalInMillis | Frequency of checking circuit breaker | 1000 | +| spark.openlineage.circuitBreaker.timeoutInSeconds | Optional timeout for OpenLineage execution (Since version 1.13) | 90 | + + + + +### Java Runtime Circuit Breaker + +More complex version of circuit breaker. The amount of free memory can be low as long as +amount of time spent on Garbage Collection is acceptable. `JavaRuntimeCircuitBreaker` closes +when free memory drops below threshold and amount of time spent on garbage collection exceeds +given threshold (`10%` by default). The circuit breaker is always open when checked for the first time +as GC threshold is computed since the previous circuit breaker call. +`circuitCheckIntervalInMillis` parameter is used +to configure a frequency circuit breaker is called. +Default value is `1000ms`, when no entry in config. +`timeoutInSeconds` is optional. If set, OpenLineage code execution is terminated when a timeout +is reached (added in version 1.13). + + + + +```yaml +circuitBreaker: + type: javaRuntime + memoryThreshold: 20 + gcCpuThreshold: 10 + circuitCheckIntervalInMillis: 1000 + timeoutInSeconds: 90 +``` + + + +| Parameter | Definition | Example | +--------------------------------------|---------------------------------------|------------- +| spark.openlineage.circuitBreaker.type | Circuit breaker type selected | javaRuntime | +| spark.openlineage.circuitBreaker.memoryThreshold | Memory threshold | 20 | +| spark.openlineage.circuitBreaker.gcCpuThreshold | Garbage Collection CPU threshold | 10 | +| spark.openlineage.circuitBreaker.circuitCheckIntervalInMillis | Frequency of checking circuit breaker | 1000 | +| spark.openlineage.circuitBreaker.timeoutInSeconds | Optional timeout for OpenLineage execution (Since version 1.13)| 90 | + + + + + +| Parameter | Definition | Example | +--------------------------------------|---------------------------------------|------------- +| openlineage.circuitBreaker.type | Circuit breaker type selected | javaRuntime | +| openlineage.circuitBreaker.memoryThreshold | Memory threshold | 20 | +| openlineage.circuitBreaker.gcCpuThreshold | Garbage Collection CPU threshold | 10 | +| openlineage.circuitBreaker.circuitCheckIntervalInMillis | Frequency of checking circuit breaker | 1000 | +| spark.openlineage.circuitBreaker.timeoutInSeconds | Optional timeout for OpenLineage execution (Since version 1.13) | 90 | + + + + + +### Custom Circuit Breaker + +List of available circuit breakers can be extended with custom one loaded via ServiceLoader +with own implementation of `io.openlineage.client.circuitBreaker.CircuitBreakerBuilder`. \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/client/java/partials/java_dynamic_env_vars.md b/versioned_docs/version-1.24.1/client/java/partials/java_dynamic_env_vars.md new file mode 100644 index 0000000..7fd93b5 --- /dev/null +++ b/versioned_docs/version-1.24.1/client/java/partials/java_dynamic_env_vars.md @@ -0,0 +1,163 @@ +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + + +The OpenLineage client supports configuration through dynamic environment variables. + +### Configuring OpenLineage Client via Dynamic Environment Variables + +These environment variables must begin with `OPENLINEAGE__`, followed by sections of the configuration separated by a double underscore `__`. +All values in the environment variables are automatically converted to lowercase, +and variable names using snake_case (single underscore) are converted into camelCase within the final configuration. + +#### Key Features + +1. Prefix Requirement: All environment variables must begin with `OPENLINEAGE__`. +2. Sections Separation: Configuration sections are separated using double underscores `__` to form the hierarchy. +3. Lowercase Conversion: Environment variable values are automatically converted to lowercase. +4. CamelCase Conversion: Any environment variable name using single underscore `_` will be converted to camelCase in the final configuration. +5. JSON String Support: You can pass a JSON string at any level of the configuration hierarchy, which will be merged into the final configuration structure. +6. Hyphen Restriction: You cannot use `-` in environment variable names. If a name strictly requires a hyphen, use a JSON string as the value of the environment variable. +7. Precedence Rules: +* Top-level keys have precedence and will not be overwritten by more nested entries. +* For example, `OPENLINEAGE__TRANSPORT='{..}'` will not have its keys overwritten by `OPENLINEAGE__TRANSPORT__AUTH__KEY='key'`. + +#### Examples + + + + +Setting following environment variables: + +```sh +OPENLINEAGE__TRANSPORT__TYPE=http +OPENLINEAGE__TRANSPORT__URL=http://localhost:5050 +OPENLINEAGE__TRANSPORT__ENDPOINT=/api/v1/lineage +OPENLINEAGE__TRANSPORT__AUTH__TYPE=api_key +OPENLINEAGE__TRANSPORT__AUTH__API_KEY=random_token +OPENLINEAGE__TRANSPORT__COMPRESSION=gzip +``` + +is equivalent to passing following YAML configuration: +```yaml +transport: + type: http + url: http://localhost:5050 + endpoint: api/v1/lineage + auth: + type: api_key + apiKey: random_token + compression: gzip +``` + + + + +Setting following environment variables: + +```sh +OPENLINEAGE__TRANSPORT__TYPE=composite +OPENLINEAGE__TRANSPORT__TRANSPORTS__FIRST__TYPE=http +OPENLINEAGE__TRANSPORT__TRANSPORTS__FIRST__URL=http://localhost:5050 +OPENLINEAGE__TRANSPORT__TRANSPORTS__FIRST__ENDPOINT=/api/v1/lineage +OPENLINEAGE__TRANSPORT__TRANSPORTS__FIRST__AUTH__TYPE=api_key +OPENLINEAGE__TRANSPORT__TRANSPORTS__FIRST__AUTH__API_KEY=random_token +OPENLINEAGE__TRANSPORT__TRANSPORTS__FIRST__AUTH__COMPRESSION=gzip +OPENLINEAGE__TRANSPORT__TRANSPORTS__SECOND__TYPE=console +``` + +is equivalent to passing following YAML configuration: +```yaml +transport: + type: composite + transports: + first: + type: http + url: http://localhost:5050 + endpoint: api/v1/lineage + auth: + type: api_key + apiKey: random_token + compression: gzip + second: + type: console +``` + + + + +Setting following environment variables: + +```sh +OPENLINEAGE__TRANSPORT='{"type":"console"}' +OPENLINEAGE__TRANSPORT__TYPE=http +``` + +is equivalent to passing following YAML configuration: +```yaml +transport: + type: console +``` + + + + +Setting following environment variables: + +```sh +OPENLINEAGE__TRANSPORT__TYPE=kafka +OPENLINEAGE__TRANSPORT__TOPIC_NAME=test +OPENLINEAGE__TRANSPORT__MESSAGE_KEY=explicit-key +OPENLINEAGE__TRANSPORT__PROPERTIES='{"key.serializer": "org.apache.kafka.common.serialization.StringSerializer"}' +``` + +is equivalent to passing following YAML configuration: +```yaml +transport: + type: kafka + topicName: test + messageKey: explicit-key + properties: + key.serializer: org.apache.kafka.common.serialization.StringSerializer +``` + +Please note that you can't use environment variables to set Spark properties, as they are not part of the configuration hierarchy. +Following environment variable: +```sh +OPENLINEAGE__TRANSPORT__PROPERTIES__KEY__SERIALIZER="org.apache.kafka.common.serialization.StringSerializer" +``` +would be equivalent to below YAML structure: +```yaml +transport: + properties: + key: + serializer: org.apache.kafka.common.serialization.StringSerializer +``` +which is not a valid configuration for Spark. + + + + + +Setting following environment variables: + +```sh +OPENLINEAGE__DATASET__NAMESPACE_RESOLVERS__RESOLVED_NAME__TYPE=hostList +OPENLINEAGE__DATASET__NAMESPACE_RESOLVERS__RESOLVED_NAME__HOSTS='["kafka-prod13.company.com", "kafka-prod15.company.com"]' +OPENLINEAGE__DATASET__NAMESPACE_RESOLVERS__RESOLVED_NAME__SCHEMA=kafka +``` + +is equivalent to passing following YAML configuration: +```yaml +dataset: + namespaceResolvers: + resolvedName: + type: hostList + hosts: + - kafka-prod13.company.com + - kafka-prod15.company.com + schema: kafka +``` + + + \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/client/java/partials/java_metrics.md b/versioned_docs/version-1.24.1/client/java/partials/java_metrics.md new file mode 100644 index 0000000..1b0f369 --- /dev/null +++ b/versioned_docs/version-1.24.1/client/java/partials/java_metrics.md @@ -0,0 +1,64 @@ +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +:::info +This feature is available in OpenLineage 1.11 and above +::: + +To ease the operational experience of using the OpenLineage integrations, this document details the metrics collected by the Java client and the configuration settings for various metric backends. + +### Metrics collected by Java Client + +The following table outlines the metrics collected by the OpenLineage Java client, which help in monitoring the integration's performance: + +| Metric | Definition | Type | +|-------------------------------------|-------------------------------------------------------|--------| +| `openlineage.emit.start` | Number of events the integration started to send | Counter| +| `openlineage.emit.complete` | Number of events the integration completed sending | Counter| +| `openlineage.emit.time` | Time spent on emitting events | Timer | +| `openlineage.circuitbreaker.engaged`| Status of the Circuit Breaker (engaged or not) | Gauge | + +## Metric Backends + +OpenLineage uses [Micrometer](https://micrometer.io) for metrics collection, similar to how SLF4J operates for logging. Micrometer provides a facade over different metric backends, allowing metrics to be dispatched to various destinations. + +### Configuring Metric Backends + +Below are the available backends and potential configurations using Micrometer's facilities. + +### StatsD + +Full configuration options for StatsD can be found in the [Micrometer's StatsDConfig implementation](https://github.com/micrometer-metrics/micrometer/blob/main/implementations/micrometer-registry-statsd/src/main/java/io/micrometer/statsd/StatsdConfig.java). + + + + +```yaml +metrics: + type: statsd + flavor: datadog + host: localhost + port: 8125 +``` + + + +| Parameter | Definition | Example | +--------------------------------------|---------------------------------------|------------- +| spark.openlineage.metrics.type | Metrics type selected | statsd | +| spark.openlineage.metrics.flavor | Flavor of StatsD configuration | datadog | +| spark.openlineage.metrics.host | Host that receives StatsD metrics | localhost | +| spark.openlineage.metrics.port | Port that receives StatsD metrics | 8125 | + + + + +| Parameter | Definition | Example | +--------------------------------------|---------------------------------------|------------- +| openlineage.metrics.type | Metrics type selected | statsd | +| openlineage.metrics.flavor | Flavor of StatsD configuration | datadog | +| openlineage.metrics.host | Host that receives StatsD metrics | localhost | +| openlineage.metrics.port | Port that receives StatsD metrics | 8125 | + + + diff --git a/versioned_docs/version-1.24.1/client/java/partials/java_namespace_resolver.md b/versioned_docs/version-1.24.1/client/java/partials/java_namespace_resolver.md new file mode 100644 index 0000000..3597177 --- /dev/null +++ b/versioned_docs/version-1.24.1/client/java/partials/java_namespace_resolver.md @@ -0,0 +1,141 @@ +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +:::info +This feature is available in OpenLineage 1.17 and above +::: + +Oftentimes host addresses are used to access data and a single dataset can be accessed via different +addresses. For example, a Kafka topic can be accessed by a list of kafka bootstrap servers or any +server from the list. In general, a problem can be solved by adding mechanism which resolves host addresses into +logical identifier understood within the organisation. This applies for all clusters like Kafka or Cassandra +which should be identified regardless of current list of hosts they contain. This also applies +for JDBC urls where a physical address of database can change over time. + +### Host List Resolver + +Host List Resolver given a list of hosts, replaces host name within +the dataset namespace into the resolved value defined. + + + + +```yaml +dataset: + namespaceResolvers: + resolved-name: + type: hostList + hosts: ['kafka-prod13.company.com', 'kafka-prod15.company.com'] + schema: "kafka" +``` + + + +| Parameter | Definition | Example | +------------------- ----------------------------------------------------|---------------|-- +| spark.openlineage.dataset.namespaceResolvers.resolved-name.type | Resolver type | hostList | +| spark.openlineage.dataset.namespaceResolvers.resolved-name.hosts | List of hosts | `['kafka-prod13.company.com', 'kafka-prod15.company.com']` | +| spark.openlineage.dataset.namespaceResolvers.resolved-name.schema | Optional schema to be specified. Resolver will be only applied if schema matches the configure one. | `kafka` | + + + + +| Parameter | Definition | Example | +------------------- -------------------------------------------|---------------|-- +| openlineage.dataset.namespaceResolvers.resolved-name.type | Resolver type | hostList | +| openlineage.dataset.namespaceResolvers.resolved-name.hosts | List of hosts | `['kafka-prod13.company.com', 'kafka-prod15.company.com']` | +| openlineage.dataset.namespaceResolvers.resolved-name.schema | Optional schema to be specified. Resolver will be only applied if schema matches the configure one. | `kafka` | + + + + + +### Pattern Namespace Resolver + +Java regex pattern is used to identify a host. Substrings matching a pattern will be replaced with resolved name. + + + + +```yaml +dataset: + namespaceResolvers: + resolved-name: + type: pattern + # 'cassandra-prod7.company.com', 'cassandra-prod8.company.com' + regex: 'cassandra-prod(\d)+\.company\.com' + schema: "cassandra" +``` + + + +| Parameter | Definition | Example | +------------------- -------------------------------------------------|---------------|-------- +| spark.openlineage.dataset.namespaceResolvers.resolved-name.type | Resolver type | pattern | +| spark.openlineage.dataset.namespaceResolvers.resolved-name.hosts | Regex pattern to find and replace | `cassandra-prod(\d)+\.company\.com` | +| spark.openlineage.dataset.namespaceResolvers.resolved-name.schema | Optional schema to be specified. Resolver will be only applied if schema matches the configure one. | `kafka` | + + + + +| Parameter | Definition | Example | +------------------- -------------------------------------------|---------------|-- +| openlineage.dataset.namespaceResolvers.resolved-name.type | Resolver type | pattern | +| openlineage.dataset.namespaceResolvers.resolved-name.hosts | Regex pattern to find and replace | `cassandra-prod(\d)+\.company\.com` | +| openlineage.dataset.namespaceResolvers.resolved-name.schema | Optional schema to be specified. Resolver will be only applied if schema matches the configure one. | `kafka` | + + + + +### Pattern Group Namespace Resolver + +For this resolver, Java regex pattern is used to identify a host. However, instead of configured resolved name, +a `matchingGroup` is used a resolved name. This can be useful when having several clusters +made from hosts with a well-defined host naming convention. + + + + +```yaml +dataset: + namespaceResolvers: + test-pattern: + type: patternGroup + # 'cassandra-test-7.company.com', 'cassandra-test-8.company.com', 'kafka-test-7.company.com', 'kafka-test-8.company.com' + regex: '(?[a-zA-Z-]+)-(\d)+\.company\.com:[\d]*' + matchingGroup: "cluster" + schema: "cassandra" +``` + + + +| Parameter | Definition | Example | +------------------- ----------------------------------------------------|---------------|-- +| spark.openlineage.dataset.namespaceResolvers.pattern-group-resolver.type | Resolver type | patternGroup | +| spark.openlineage.dataset.namespaceResolvers.pattern-group-resolver.regex | Regex pattern to find and replace | `(?[a-zA-Z-]+)-(\d)+\.company\.com:[\d]*` | +| spark.openlineage.dataset.namespaceResolvers.pattern-group-resolver.matchingGroup | Matching group named within the regex | `cluster` | +| spark.openlineage.dataset.namespaceResolvers.pattern-group-resolver.schema | Optional schema to be specified. Resolver will be only applied if schema matches the configure one. | `kafka` | + + + + +| Parameter | Definition | Example | +------------------- ----------------------------------------------------|---------------|-- +| openlineage.dataset.namespaceResolvers.pattern-group-resolver.type | Resolver type | patternGroup | +| openlineage.dataset.namespaceResolvers.pattern-group-resolver.regex | Regex pattern to find and replace | `(?[a-zA-Z-]+)-(\d)+\.company\.com` | +| openlineage.dataset.namespaceResolvers.pattern-group-resolver.matchingGroup | Matching group named within the regex | `cluster` | +| openlineage.dataset.namespaceResolvers.pattern-group-resolver.schema | Optional schema to be specified. Resolver will be only applied if schema matches the configure one. | `kafka` | + + + + +### Custom Resolver + +Custom resolver can be added by implementing: + * `io.openlineage.client.dataset.namespaceResolver.DatasetNamespaceResolver` + * `io.openlineage.client.dataset.namespaceResolver.DatasetNamespaceResolverBuilder` + * `io.openlineage.client.dataset.namespaceResolver.DatasetNamespaceResolverConfig` + +Config class can be used to pass any namespace resolver parameters through standard configuration +mechanism (Spark & Flink configuration or `openlineage.yml` file provided). Standard `ServiceLoader` +approach is used to load and initiate custom classes. \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/client/java/partials/java_transport.md b/versioned_docs/version-1.24.1/client/java/partials/java_transport.md new file mode 100644 index 0000000..d3c32ee --- /dev/null +++ b/versioned_docs/version-1.24.1/client/java/partials/java_transport.md @@ -0,0 +1,795 @@ +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +**Tip:** See current list of [all supported transports](https://github.com/OpenLineage/OpenLineage/tree/main/client/java/src/main/java/io/openlineage/client/transports). + +### [HTTP](https://github.com/OpenLineage/OpenLineage/tree/main/client/java/src/main/java/io/openlineage/client/transports/HttpTransport.java) + +Allows sending events to HTTP endpoint, using [ApacheHTTPClient](https://hc.apache.org/index.html). + +#### Configuration + +- `type` - string, must be `"http"`. Required. +- `url` - string, base url for HTTP requests. Required. +- `endpoint` - string specifying the endpoint to which events are sent, appended to `url`. Optional, default: `/api/v1/lineage`. +- `urlParams` - dictionary specifying query parameters send in HTTP requests. Optional. +- `timeoutInMillis` - integer specifying timeout (in milliseconds) value used while connecting to server. Optional, default: `5000`. +- `auth` - dictionary specifying authentication options. Optional, by default no authorization is used. If set, requires the `type` property. + - `type` - string specifying the "api_key" or the fully qualified class name of your TokenProvider. Required if `auth` is provided. + - `apiKey` - string setting the Authentication HTTP header as the Bearer. Required if `type` is `api_key`. +- `headers` - dictionary specifying HTTP request headers. Optional. +- `compression` - string, name of algorithm used by HTTP client to compress request body. Optional, default value `null`, allowed values: `gzip`. Added in v1.13.0. + +#### Behavior + +Events are serialized to JSON, and then are send as HTTP POST request with `Content-Type: application/json`. + +#### Examples + + + + +Anonymous connection: + +```yaml +transport: + type: http + url: http://localhost:5000 +``` + +With authorization: + +```yaml +transport: + type: http + url: http://localhost:5000 + auth: + type: api_key + api_key: f38d2189-c603-4b46-bdea-e573a3b5a7d5 +``` + +Full example: + +```yaml +transport: + type: http + url: http://localhost:5000 + endpoint: /api/v1/lineage + urlParams: + param0: value0 + param1: value1 + timeoutInMillis: 5000 + auth: + type: api_key + api_key: f38d2189-c603-4b46-bdea-e573a3b5a7d5 + headers: + X-Some-Extra-Header: abc + compression: gzip +``` + + + + +Anonymous connection: + +```ini +spark.openlineage.transport.type=http +spark.openlineage.transport.url=http://localhost:5000 +``` + +With authorization: + +```ini +spark.openlineage.transport.type=http +spark.openlineage.transport.url=http://localhost:5000 +spark.openlineage.transport.auth.type=api_key +spark.openlineage.transport.auth.apiKey=f38d2189-c603-4b46-bdea-e573a3b5a7d5 +``` + +Full example: + +```ini +spark.openlineage.transport.type=http +spark.openlineage.transport.url=http://localhost:5000 +spark.openlineage.transport.endpoint=/api/v1/lineage +spark.openlineage.transport.urlParams.param0=value0 +spark.openlineage.transport.urlParams.param1=value1 +spark.openlineage.transport.timeoutInMillis=5000 +spark.openlineage.transport.auth.type=api_key +spark.openlineage.transport.auth.apiKey=f38d2189-c603-4b46-bdea-e573a3b5a7d5 +spark.openlineage.transport.headers.X-Some-Extra-Header=abc +spark.openlineage.transport.compression=gzip +``` + +

+URL parsing within Spark integration +

+ +You can supply http parameters using values in url, the parsed `spark.openlineage.*` properties are located in url as follows: + +`{transport.url}/{transport.endpoint}/namespaces/{namespace}/jobs/{parentJobName}/runs/{parentRunId}?app_name={appName}&api_key={transport.apiKey}&timeout={transport.timeout}&xxx={transport.urlParams.xxx}` + +example: + +`http://localhost:5000/api/v1/namespaces/ns_name/jobs/job_name/runs/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx?app_name=app&api_key=abc&timeout=5000&xxx=xxx` + +

+
+ + + + +Anonymous connection: + +```ini +spark.openlineage.transport.type=http +spark.openlineage.transport.url=http://localhost:5000 +``` + +With authorization: + +```ini +openlineage.transport.type=http +openlineage.transport.url=http://localhost:5000 +openlineage.transport.auth.type=api_key +openlineage.transport.auth.apiKey=f38d2189-c603-4b46-bdea-e573a3b5a7d5 +``` + +Full example: + +```ini +openlineage.transport.type=http +openlineage.transport.url=http://localhost:5000 +openlineage.transport.endpoint=/api/v1/lineage +openlineage.transport.urlParams.param0=value0 +openlineage.transport.urlParams.param1=value1 +openlineage.transport.timeoutInMillis=5000 +openlineage.transport.auth.type=api_key +openlineage.transport.auth.apiKey=f38d2189-c603-4b46-bdea-e573a3b5a7d5 +openlineage.transport.headers.X-Some-Extra-Header=abc +openlineage.transport.compression=gzip +``` + + + + +Anonymous connection: + +```java +import io.openlineage.client.OpenLineageClient; +import io.openlineage.client.transports.HttpConfig; +import io.openlineage.client.transports.HttpTransport; + +HttpConfig httpConfig = new HttpConfig(); +httpConfig.setUrl("http://localhost:5000"); + +OpenLineageClient client = OpenLineageClient.builder() + .transport( + new HttpTransport(httpConfig)) + .build(); +``` + +With authorization: + +```java +import io.openlineage.client.OpenLineageClient; +import io.openlineage.client.transports.ApiKeyTokenProvider; +import io.openlineage.client.transports.HttpConfig; +import io.openlineage.client.transports.HttpTransport; + +ApiKeyTokenProvider apiKeyTokenProvider = new ApiKeyTokenProvider(); +apiKeyTokenProvider.setApiKey("f38d2189-c603-4b46-bdea-e573a3b5a7d5"); + +HttpConfig httpConfig = new HttpConfig(); +httpConfig.setUrl("http://localhost:5000"); +httpConfig.setAuth(apiKeyTokenProvider); + +OpenLineageClient client = OpenLineageClient.builder() + .transport( + new HttpTransport(httpConfig)) + .build(); +``` + +Full example: + +```java +import java.util.Map; + +import io.openlineage.client.OpenLineageClient; +import io.openlineage.client.transports.ApiKeyTokenProvider; +import io.openlineage.client.transports.HttpConfig; +import io.openlineage.client.transports.HttpTransport; + +Map queryParams = Map.of( + "param0", "value0", + "param1", "value1" +); + +Map headers = Map.of( + "X-Some-Extra-Header", "abc" +); + +ApiKeyTokenProvider apiKeyTokenProvider = new ApiKeyTokenProvider(); +apiKeyTokenProvider.setApiKey("f38d2189-c603-4b46-bdea-e573a3b5a7d5"); + +HttpConfig httpConfig = new HttpConfig(); +httpConfig.setUrl("http://localhost:5000"); +httpConfig.setEndpoint("/api/v1/lineage"); +httpConfig.setUrlParams(queryParams); +httpConfig.setAuth(apiKeyTokenProvider); +httpConfig.setTimeoutInMillis(headers); +httpConfig.setHeaders(5000); +httpConfig.setCompression(HttpConfig.Compression.GZIP); + +OpenLineageClient client = OpenLineageClient.builder() + .transport( + new HttpTransport(httpConfig)) + .build(); +``` + + + + +### [Kafka](https://github.com/OpenLineage/OpenLineage/tree/main/client/java/src/main/java/io/openlineage/client/transports/KafkaTransport.java) +If a transport type is set to `kafka`, then the below parameters would be read and used when building KafkaProducer. +This transport requires the artifact `org.apache.kafka:kafka-clients:3.1.0` (or compatible) on your classpath. + +#### Configuration + +- `type` - string, must be `"kafka"`. Required. +- `topicName` - string specifying the topic on what events will be sent. Required. +- `properties` - a dictionary containing a Kafka producer config as in [Kafka producer config](http://kafka.apache.org/0100/documentation.html#producerconfigs). Required. +- `localServerId` - **deprecated**, renamed to `messageKey` since v1.13.0. +- `messageKey` - string, key for all Kafka messages produced by transport. Optional, default value described below. Added in v1.13.0. + + Default values for `messageKey` are: + - `run:{parentJob.namespace}/{parentJob.name}` - for RunEvent with parent facet + - `run:{job.namespace}/{job.name}` - for RunEvent + - `job:{job.namespace}/{job.name}` - for JobEvent + - `dataset:{dataset.namespace}/{dataset.name}` - for DatasetEvent + +#### Behavior + +Events are serialized to JSON, and then dispatched to the Kafka topic. + +#### Notes + +It is recommended to provide `messageKey` if Job hierarchy is used. It can be any string, but it should be the same for all jobs in +hierarchy, like `Airflow task -> Spark application -> Spark task runs`. + +#### Examples + + + + +```yaml +transport: + type: kafka + topicName: openlineage.events + properties: + bootstrap.servers: localhost:9092,another.host:9092 + acks: all + retries: 3 + key.serializer: org.apache.kafka.common.serialization.StringSerializer + value.serializer: org.apache.kafka.common.serialization.StringSerializer + messageKey: some-value +``` + + + + +```ini +spark.openlineage.transport.type=kafka +spark.openlineage.transport.topicName=openlineage.events +spark.openlineage.transport.properties.bootstrap.servers=localhost:9092,another.host:9092 +spark.openlineage.transport.properties.acks=all +spark.openlineage.transport.properties.retries=3 +spark.openlineage.transport.properties.key.serializer=org.apache.kafka.common.serialization.StringSerializer +spark.openlineage.transport.properties.value.serializer=org.apache.kafka.common.serialization.StringSerializer +spark.openlineage.transport.messageKey=some-value +``` + + + + +```ini +openlineage.transport.type=kafka +openlineage.transport.topicName=openlineage.events +openlineage.transport.properties.bootstrap.servers=localhost:9092,another.host:9092 +openlineage.transport.properties.acks=all +openlineage.transport.properties.retries=3 +openlineage.transport.properties.key.serializer=org.apache.kafka.common.serialization.StringSerializer +openlineage.transport.properties.value.serializer=org.apache.kafka.common.serialization.StringSerializer +openlineage.transport.messageKey=some-value +``` + + + + +```java +import java.util.Properties; + +import io.openlineage.client.OpenLineageClient; +import io.openlineage.client.transports.KafkaConfig; +import io.openlineage.client.transports.KafkaTransport; + +Properties kafkaProperties = new Properties(); +kafkaProperties.setProperty("bootstrap.servers", "localhost:9092,another.host:9092"); +kafkaProperties.setProperty("acks", "all"); +kafkaProperties.setProperty("retries", "3"); +kafkaProperties.setProperty("key.serializer", "org.apache.kafka.common.serialization.StringSerializer"); +kafkaProperties.setProperty("value.serializer", "org.apache.kafka.common.serialization.StringSerializer"); + +KafkaConfig kafkaConfig = new KafkaConfig(); +KafkaConfig.setTopicName("openlineage.events"); +KafkaConfig.setProperties(kafkaProperties); +KafkaConfig.setLocalServerId("some-value"); + +OpenLineageClient client = OpenLineageClient.builder() + .transport( + new KafkaTransport(httpConfig)) + .build(); +``` + + + + +*Notes*: +It is recommended to provide `messageKey` if Job hierarchy is used. It can be any string, but it should be the same for all jobs in +hierarchy, like `Airflow task -> Spark application`. + +Default values are: +- `run:{parentJob.namespace}/{parentJob.name}/{parentRun.id}` - for RunEvent with parent facet +- `run:{job.namespace}/{job.name}/{run.id}` - for RunEvent +- `job:{job.namespace}/{job.name}` - for JobEvent +- `dataset:{dataset.namespace}/{dataset.name}` - for DatasetEvent + +### [Console](https://github.com/OpenLineage/OpenLineage/tree/main/client/java/src/main/java/io/openlineage/client/transports/ConsoleTransport.java) + +This straightforward transport emits OpenLineage events directly to the console through a logger. +No additional configuration is required. + +#### Behavior + +Events are serialized to JSON. Then each event is logged with `INFO` level to logger with name `ConsoleTransport`. + +#### Notes + +Be cautious when using the `DEBUG` log level, as it might result in double-logging due to the `OpenLineageClient` also logging. + +#### Configuration + +- `type` - string, must be `"console"`. Required. + +#### Examples + + + + +```yaml +transport: + type: console +``` + + + + +```ini +spark.openlineage.transport.type=console +``` + + + + +```ini +openlineage.transport.type=console +``` + + + + +```java +import java.util.Properties; + +import io.openlineage.client.OpenLineageClient; +import io.openlineage.client.transports.ConsoleTransport; + +OpenLineageClient client = OpenLineageClient.builder() + .transport( + new ConsoleTransport()) + .build(); +``` + + + + +### [File](https://github.com/OpenLineage/OpenLineage/tree/main/client/java/src/main/java/io/openlineage/client/transports/FileTransport.java) + +Designed mainly for integration testing, the `FileTransport` emits OpenLineage events to a given file. + +#### Configuration + +- `type` - string, must be `"file"`. Required. +- `location` - string specifying the path of the file. Required. + +#### Behavior + +- If the target file is absent, it's created. +- Events are serialized to JSON, and then appended to a file, separated by newlines. +- Intrinsic newline characters within the event JSON are eliminated to ensure one-line events. + +#### Notes for Yarn/Kubernetes + +This transport type is pretty useless on Spark/Flink applications deployed to Yarn or Kubernetes cluster: +- Each executor will write file to a local filesystem of Yarn container/K8s pod. So resulting file will be removed when such container/pod is destroyed. +- Kubernetes persistent volumes are not destroyed after pod removal. But all the executors will write to the same network disk in parallel, producing a broken file. + +#### Examples + + + + +```yaml +transport: + type: file + location: /path/to/your/file +``` + + + + +```ini +spark.openlineage.transport.type=file +spark.openlineage.transport.location=/path/to/your/filext +``` + + + + +```ini +openlineage.transport.type=file +openlineage.transport.location=/path/to/your/file +``` + + + + +```java +import java.util.Properties; + +import io.openlineage.client.OpenLineageClient; +import io.openlineage.client.transports.FileConfig; +import io.openlineage.client.transports.FileTransport; + +FileConfig fileConfig = new FileConfig("/path/to/your/file"); + +OpenLineageClient client = OpenLineageClient.builder() + .transport( + new FileTransport(fileConfig)) + .build(); +``` + + + + +## [Composite](https://github.com/OpenLineage/OpenLineage/tree/main/client/java/src/main/java/io/openlineage/client/transports/CompositeTransport.java) + +The `CompositeTransport` is designed to combine multiple transports, allowing event emission to several destinations. This is useful when events need to be sent to multiple targets, such as a logging system and an API endpoint. The events are delivered sequentially - one after another in a defined order. + +#### Configuration + +- `type` - string, must be "composite". Required. +- `transports` - a list or a map of transport configurations. Required. +- `continueOnFailure` - boolean flag, determines if the process should continue even when one of the transports fails. Default is `false`. + +#### Behavior + +- The configured transports will be initialized and used in sequence to emit OpenLineage events. +- If `continueOnFailure` is set to `false`, a failure in one transport will stop the event emission process, and an exception will be raised. +- If `continueOnFailure` is `true`, the failure will be logged, but the remaining transports will still attempt to send the event. + +#### Notes for Multiple Transports +The composite transport can be used with any OpenLineage transport (e.g. `HttpTransport`, `KafkaTransport`, etc). +Ideal for scenarios where OpenLineage events need to reach multiple destinations for redundancy or different types of processing. + +The `transports` configuration can be provided in two formats: + +1. A list of transport configurations, where each transport may optionally include a `name` field. +2. A map of transport configurations, where the key acts as the name for each transport. +The map format is particularly useful for configurations set via environment variables or Java properties, providing a more convenient and flexible setup. + +##### Why are transport names used? +Transport names are not required for basic functionality. Their primary purpose is to enable configuration of composite transports via environment variables, which is only supported when names are defined. + +#### Examples + + + + +```yaml +transport: + type: composite + continueOnFailure: true + transports: + - type: http + url: http://example.com/api + name: my_http + - type: kafka + topicName: openlineage.events + properties: + bootstrap.servers: localhost:9092,another.host:9092 + acks: all + retries: 3 + key.serializer: org.apache.kafka.common.serialization.StringSerializer + value.serializer: org.apache.kafka.common.serialization.StringSerializer + messageKey: some-value + continueOnFailure: true +``` + + + + +```yaml +transport: + type: composite + continueOnFailure: true + transports: + my_http: + type: http + url: http://example.com/api + name: my_http + my_kafka: + type: kafka + topicName: openlineage.events + properties: + bootstrap.servers: localhost:9092,another.host:9092 + acks: all + retries: 3 + key.serializer: org.apache.kafka.common.serialization.StringSerializer + value.serializer: org.apache.kafka.common.serialization.StringSerializer + messageKey: some-value + continueOnFailure: true +``` + + + + +```ini +spark.openlineage.transport.type=composite +spark.openlineage.transport.continueOnFailure=true +spark.openlineage.transport.transports.my_http.type=http +spark.openlineage.transport.transports.my_http.url=http://example.com/api +spark.openlineage.transport.transports.my_kafka.type=kafka +spark.openlineage.transport.transports.my_kafka.topicName=openlineage.events +spark.openlineage.transport.transports.my_kafka.properties.bootstrap.servers=localhost:9092,another.host:9092 +spark.openlineage.transport.transports.my_kafka.properties.acks=all +spark.openlineage.transport.transports.my_kafka.properties.retries=3 +spark.openlineage.transport.transports.my_kafka.properties.key.serializer=org.apache.kafka.common.serialization.StringSerializer +spark.openlineage.transport.transports.my_kafka.properties.value.serializer=org.apache.kafka.common.serialization.StringSerializer +``` + + + + +```ini +openlineage.transport.type=composite +openlineage.transport.continueOnFailure=true +openlineage.transport.transports.my_http.type=http +openlineage.transport.transports.my_http.url=http://example.com/api +openlineage.transport.transports.my_kafka.type=kafka +openlineage.transport.transports.my_kafka.topicName=openlineage.events +openlineage.transport.transports.my_kafka.properties.bootstrap.servers=localhost:9092,another.host:9092 +openlineage.transport.transports.my_kafka.properties.acks=all +openlineage.transport.transports.my_kafka.properties.retries=3 +openlineage.transport.transports.my_kafka.properties.key.serializer=org.apache.kafka.common.serialization.StringSerializer +openlineage.transport.transports.my_kafka.properties.value.serializer=org.apache.kafka.common.serialization.StringSerializer +``` + + + + +```java +import java.util.Arrays; +import io.openlineage.client.OpenLineageClient; +import io.openlineage.client.transports.CompositeConfig; +import io.openlineage.client.transports.HttpConfig; +import io.openlineage.client.transports.HttpTransport; +import io.openlineage.client.transports.KafkaConfig; +import io.openlineage.client.transports.KafkaTransport; + +HttpConfig httpConfig = new HttpConfig(); +httpConfig.setUrl("http://example.com/api"); +KafkaConfig kafkaConfig = new KafkaConfig(); +KafkaConfig.setTopicName("openlineage.events"); +KafkaConfig.setLocalServerId("some-value"); + +CompositeConfig compositeConfig = new CompositeConfig(Arrays.asList( + new HttpTransport(httpConfig), + new KafkaTransport(kafkaConfig) +), true); + +OpenLineageClient client = OpenLineageClient.builder() + .transport( + new CompositeTransport(compositeConfig)) + .build(); +``` + + + + +### [GcpLineage](https://github.com/OpenLineage/OpenLineage/blob/main/client/transports-dataplex/src/main/java/io/openlineage/client/transports/gcplineage/GcpLineageTransport.java) + +To use this transport in your project, you need to include `io.openlineage:transports-gcplineage` artifact in +your build configuration. This is particularly important for environments like `Spark`, where this transport must be on +the classpath for lineage events to be emitted correctly. + +#### Configuration + +- `type` - string, must be `"gcplineage"`. Required. +- `endpoint` - string, specifies the endpoint to which events are sent, default value is + `datalineage.googleapis.com:443`. Optional. +- `projectId` - string, the project quota identifier. If not provided, it is determined based on user credentials. + Optional. +- `location` - string, [Dataplex location](https://cloud.google.com/dataplex/docs/locations). Optional, default: + `"us"`. +- `credentialsFile` - string, path + to + the [Service Account credentials JSON file](https://developers.google.com/workspace/guides/create-credentials#create_credentials_for_a_service_account). + Optional, if not + provided [Application Default Credentials](https://cloud.google.com/docs/authentication/application-default-credentials) + are used +- `mode` - enum that specifies the type of client used for publishing OpenLineage events to GCP Lineage service. Possible values: + `sync` (synchronous) or `async` (asynchronous). Optional, default: `async`. + +#### Behavior + +- Events are serialized to JSON, included as part of a `gRPC` request, and then dispatched to the `GCP Lineage service` endpoint. +- Depending on the `mode` chosen, requests are sent using either a synchronous or asynchronous client. + +#### Examples + + + + +```yaml +transport: + type: gcplineage + projectId: your_gcp_project_id + location: us + mode: sync + credentialsFile: path/to/credentials.json +``` + + + + +```ini +spark.openlineage.transport.type=gcplineage +spark.openlineage.transport.projectId=your_gcp_project_id +spark.openlineage.transport.location=us +spark.openlineage.transport.mode=sync +spark.openlineage.transport.credentialsFile=path/to/credentials.json +``` + + + + +```ini +openlineage.transport.type=gcplineage +openlineage.transport.projectId=your_gcp_project_id +openlineage.transport.location=us +openlineage.transport.mode=sync +openlineage.transport.credentialsFile=path/to/credentials.json +``` + + + + +```java +import io.openlineage.client.OpenLineageClient; +import io.openlineage.client.transports.gcplineage.GcpLineageTransportConfig; +import io.openlineage.client.transports.dataplex.GcpLineageTransport; + + +GcpLineageTransportConfig gcplineageConfig = new GcpLineageTransportConfig(); + +gcplineageConfig.setProjectId("your_gcp_project_id"); +gcplineageConfig.setLocation("your_gcp_location"); +gcplineageConfig.setMode("sync"); +gcplineageConfig.setCredentialsFile("path/to/credentials.json"); + +OpenLineageClient client = OpenLineageClient.builder() + .transport( + new GcpLineageTransport(gcplineageConfig)) + .build(); +``` + + + + +### [Google Cloud Storage](https://github.com/OpenLineage/OpenLineage/blob/main/client/java/transports-gcs/src/main/java/io/openlineage/client/transports/gcs/GcsTransport.java) + +To use this transport in your project, you need to include `io.openlineage:transports-gcs` artifact in +your build configuration. This is particularly important for environments like `Spark`, where this transport must be on +the classpath for lineage events to be emitted correctly. + +#### Configuration + +- `type` - string, must be `"gcs"`. Required. +- `projectId` - string, the project quota identifier. Required. +- `credentialsFile` - string, path + to the [Service Account credentials JSON file](https://developers.google.com/workspace/guides/create-credentials#create_credentials_for_a_service_account). + Optional, if not + provided [Application Default Credentials](https://cloud.google.com/docs/authentication/application-default-credentials) + are used +- `bucketName` - string, the GCS bucket name. Required +- `fileNamePrefix` - string, prefix for the event file names. Optional. + +#### Behavior + +- Events are serialized to JSON and stored in the specified GCS bucket. +- Each event file is named based on its `eventTime`, converted to epoch milliseconds, with an optional prefix if configured. +- Two constructors are available: one accepting both `Storage` and `GcsTransportConfig` and another solely accepting + `GcsTransportConfig`. + +#### Examples + + + + +```yaml +transport: + type: gcs + bucketName: my-gcs-bucket + fileNamePrefix: /file/name/prefix/ + credentialsFile: path/to/credentials.json +``` + + + + +```ini +spark.openlineage.transport.type=gcs +spark.openlineage.transport.bucketName=my-gcs-bucket +spark.openlineage.transport.credentialsFile=path/to/credentials.json +spark.openlineage.transport.credentialsFile=file/name/prefix/ +``` + + + + +```ini +openlineage.transport.type=gcs +openlineage.transport.bucketName=my-gcs-bucket +openlineage.transport.credentialsFile=path/to/credentials.json +openlineage.transport.credentialsFile=file/name/prefix/ +``` + + + + +```java +import io.openlineage.client.OpenLineageClient; +import io.openlineage.client.transports.gcs.GcsTransportConfig; +import io.openlineage.client.transports.dataplex.GcsTransport; + + +DataplexConfig gcsConfig = new GcsTransportConfig(); + +gcsConfig.setBucketName("my-bucket-name"); +gcsConfig.setFileNamePrefix("/file/name/prefix/"); +gcsConfig.setCredentialsFile("path/to/credentials.json"); + +OpenLineageClient client = OpenLineageClient.builder() + .transport( + new GcsTransport(dataplexConfig)) + .build(); +``` + + + + + +import S3Transport from './s3_transport.md'; + + \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/client/java/partials/s3_transport.md b/versioned_docs/version-1.24.1/client/java/partials/s3_transport.md new file mode 100644 index 0000000..c35ab00 --- /dev/null +++ b/versioned_docs/version-1.24.1/client/java/partials/s3_transport.md @@ -0,0 +1,102 @@ +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + + +### [S3](https://github.com/OpenLineage/OpenLineage/blob/main/client/transports-s3/src/main/java/io/openlineage/client/transports/s3/S3Transport.java) + +To use this transport in your project, you need to include the following dependency in your build configuration. This is +particularly important for environments like `Spark`, where this transport must be on the classpath for lineage events +to be emitted correctly. + +#### Maven + +```xml + + + io.openlineage + transports-s3 + YOUR_VERSION_HERE + +``` + +#### Configuration + +- `type` - string, must be `"s3"`. Required. +- `endpoint` - string, the endpoint for S3 compliant service like MinIO, Ceph, etc. Optional +- `bucketName` - string, the S3 bucket name. Required +- `fileNamePrefix` - string, prefix for the event file names. It is separated from the timestamp with underscore. It can + include path and file name prefix. Optional. + +##### Credentials + +To authenticate, the transport uses +the [default credentials provider chain](https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/credentials-chain.html). The possible authentication methods include: +- Java system properties +- Environment variables +- Shared credentials config file (by default `~/.aws/config`) +- EC2 instance credentials (convenient in EMR and Glue) +- and other + +Refer to the documentation for details. + +#### Behavior + +- Events are serialized to JSON and stored in the specified S3 bucket. +- Each event file is named based on its `eventTime`, converted to epoch milliseconds, with an optional prefix if + configured. + +#### Examples + + + + +```yaml +transport: + type: s3 + endpoint: https://my-minio.example.com + bucketName: events + fileNamePrefix: my/service/events/event +``` + + + + +```ini +spark.openlineage.transport.type=s3 +spark.openlineage.transport.endpoint=https://my-minio.example.com +spark.openlineage.transport.bucketName=events +spark.openlineage.transport.fileNamePrefix=my/service/events/event +``` + + + + +```ini +openlineage.transport.type=s3 +openlineage.transport.endpoint=https://my-minio.example.com +openlineage.transport.bucketName=events +openlineage.transport.fileNamePrefix=my/service/events/event +``` + + + + +```java +import io.openlineage.client.OpenLineageClient; +import io.openlineage.client.transports.s3.S3TransportConfig; +import io.openlineage.client.transports.s3.S3Transport; + + +S3TransportConfig s3Config = new S3TransportConfig(); + +s3Config.setEndpoint("https://my-minio.example.com"); +s3Config.setBucketName("events"); +s3Config.setFileNamePrefix("my/service/events/event"); + +OpenLineageClient client = OpenLineageClient.builder() + .transport(new S3Transport(s3Config)) + .build(); +``` + + + \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/client/java/usage.md b/versioned_docs/version-1.24.1/client/java/usage.md new file mode 100644 index 0000000..48da91d --- /dev/null +++ b/versioned_docs/version-1.24.1/client/java/usage.md @@ -0,0 +1,368 @@ +--- +sidebar_position: 2 +title: Usage Example +--- + +```java +// Use openlineage.yml +OpenLineageClient client = Clients.newClient(); + +// Define a simple OpenLineage START or COMPLETE event +OpenLineage.RunEvent startOrCompleteRun = ... + +// Emit OpenLineage event +client.emit(startOrCompleteRun); +``` + +### 1. Simple OpenLineage Client Test for Console Transport +First, let's explore how we can create OpenLineage client instance, but not using any actual transport to emit the data yet, except only to our `Console.` This would be a good exercise to run tests and check the data payloads. + +```java + OpenLineageClient client = OpenLineageClient.builder() + .transport(new ConsoleTransport()).build(); +``` + +Also, we will then get a sample payload to produce a `RunEvent`: + +```java + // create one start event for testing + RunEvent event = buildEvent(EventType.START); +``` + +Lastly, we will emit this event using the client that we instantiated\: + +```java + // emit the event + client.emit(event); +``` + +Here is the full source code of the test client application: + +```java +package ol.test; + +import io.openlineage.client.OpenLineage; +import io.openlineage.client.OpenLineageClient; +import io.openlineage.client.OpenLineage.RunEvent; +import io.openlineage.client.OpenLineage.InputDataset; +import io.openlineage.client.OpenLineage.Job; +import io.openlineage.client.OpenLineage.JobFacets; +import io.openlineage.client.OpenLineage.OutputDataset; +import io.openlineage.client.OpenLineage.Run; +import io.openlineage.client.OpenLineage.RunFacets; +import io.openlineage.client.OpenLineage.RunEvent.EventType; +import io.openlineage.client.transports.ConsoleTransport; +import io.openlineage.client.utils.UUIDUtils; + +import java.net.URI; +import java.time.ZoneId; +import java.time.ZonedDateTime; +import java.util.Arrays; +import java.util.List; +import java.util.UUID; + +/** + * My first openlinage client code + */ +public class OpenLineageClientTest +{ + public static void main( String[] args ) + { + try { + OpenLineageClient client = OpenLineageClient.builder() + .transport(new ConsoleTransport()).build(); + + // create one start event for testing + RunEvent event = buildEvent(EventType.START); + + // emit the event + client.emit(event); + + } catch (Exception e) { + e.printStackTrace(); + } + + } + + // sample code to build event + public static RunEvent buildEvent(EventType eventType) { + ZonedDateTime now = ZonedDateTime.now(ZoneId.of("UTC")); + URI producer = URI.create("producer"); + OpenLineage ol = new OpenLineage(producer); + UUID runId = UUIDUtils.generateNewUUID(); + + // run facets + RunFacets runFacets = + ol.newRunFacetsBuilder() + .nominalTime( + ol.newNominalTimeRunFacetBuilder() + .nominalStartTime(now) + .nominalEndTime(now) + .build()) + .build(); + + // a run is composed of run id, and run facets + Run run = ol.newRunBuilder().runId(runId).facets(runFacets).build(); + + // job facets + JobFacets jobFacets = ol.newJobFacetsBuilder().build(); + + // job + String name = "jobName"; + String namespace = "namespace"; + Job job = ol.newJobBuilder().namespace(namespace).name(name).facets(jobFacets).build(); + + // input dataset + List inputs = + Arrays.asList( + ol.newInputDatasetBuilder() + .namespace("ins") + .name("input") + .facets( + ol.newDatasetFacetsBuilder() + .version(ol.newDatasetVersionDatasetFacet("input-version")) + .build()) + .inputFacets( + ol.newInputDatasetInputFacetsBuilder() + .dataQualityMetrics( + ol.newDataQualityMetricsInputDatasetFacetBuilder() + .rowCount(10L) + .bytes(20L) + .columnMetrics( + ol.newDataQualityMetricsInputDatasetFacetColumnMetricsBuilder() + .put( + "mycol", + ol.newDataQualityMetricsInputDatasetFacetColumnMetricsAdditionalBuilder() + .count(10D) + .distinctCount(10L) + .max(30D) + .min(5D) + .nullCount(1L) + .sum(3000D) + .quantiles( + ol.newDataQualityMetricsInputDatasetFacetColumnMetricsAdditionalQuantilesBuilder() + .put("25", 52D) + .build()) + .build()) + .build()) + .build()) + .build()) + .build()); + // output dataset + List outputs = + Arrays.asList( + ol.newOutputDatasetBuilder() + .namespace("ons") + .name("output") + .facets( + ol.newDatasetFacetsBuilder() + .version(ol.newDatasetVersionDatasetFacet("output-version")) + .build()) + .outputFacets( + ol.newOutputDatasetOutputFacetsBuilder() + .outputStatistics(ol.newOutputStatisticsOutputDatasetFacet(10L, 20L)) + .build()) + .build()); + + // run state update which encapsulates all - with START event in this case + RunEvent runStateUpdate = + ol.newRunEventBuilder() + .eventType(OpenLineage.RunEvent.EventType.START) + .eventTime(now) + .run(run) + .job(job) + .inputs(inputs) + .outputs(outputs) + .build(); + + return runStateUpdate; + } +} +``` + +The result of running this will result in the following output from your Java application: + +``` +[main] INFO io.openlineage.client.transports.ConsoleTransport - {"eventType":"START","eventTime":"2022-08-05T15:11:24.858414Z","run":{"runId":"bb46bbc4-fb1a-495a-ad3b-8d837f566749","facets":{"nominalTime":{"_producer":"producer","_schemaURL":"https://openlineage.io/spec/facets/1-0-0/NominalTimeRunFacet.json#/$defs/NominalTimeRunFacet","nominalStartTime":"2022-08-05T15:11:24.858414Z","nominalEndTime":"2022-08-05T15:11:24.858414Z"}}},"job":{"namespace":"namespace","name":"jobName","facets":{}},"inputs":[{"namespace":"ins","name":"input","facets":{"version":{"_producer":"producer","_schemaURL":"https://openlineage.io/spec/facets/1-0-0/DatasetVersionDatasetFacet.json#/$defs/DatasetVersionDatasetFacet","datasetVersion":"input-version"}},"inputFacets":{"dataQualityMetrics":{"_producer":"producer","_schemaURL":"https://openlineage.io/spec/facets/1-0-0/DataQualityMetricsInputDatasetFacet.json#/$defs/DataQualityMetricsInputDatasetFacet","rowCount":10,"bytes":20,"columnMetrics":{"mycol":{"nullCount":1,"distinctCount":10,"sum":3000.0,"count":10.0,"min":5.0,"max":30.0,"quantiles":{"25":52.0}}}}}}],"outputs":[{"namespace":"ons","name":"output","facets":{"version":{"_producer":"producer","_schemaURL":"https://openlineage.io/spec/facets/1-0-0/DatasetVersionDatasetFacet.json#/$defs/DatasetVersionDatasetFacet","datasetVersion":"output-version"}},"outputFacets":{"outputStatistics":{"_producer":"producer","_schemaURL":"https://openlineage.io/spec/facets/1-0-0/OutputStatisticsOutputDatasetFacet.json#/$defs/OutputStatisticsOutputDatasetFacet","rowCount":10,"size":20}}}],"producer":"producer","schemaURL":"https://openlineage.io/spec/1-0-2/OpenLineage.json#/$defs/RunEvent"} +``` + +### 2. Simple OpenLineage Client Test for Http Transport + +Now, using the same code base, we will change how the client application works by switching the Console transport into `Http Transport` as shown below. This code will now be able to send the OpenLineage events into a compatible backends such as [Marquez](https://marquezproject.ai/). + +Before making this change and running it, make sure you have an instance of Marquez running on your local environment. Setting up and running Marquez can be found [here](https://marquezproject.github.io/marquez/quickstart.html). + +```java +OpenLineageClient client = OpenLineageClient.builder() + .transport( + HttpTransport.builder() + .uri("http://localhost:5000") + .build()) + .build(); +``` +If we ran the same application, you will now see the event data not emitted in the output console, but rather via the HTTP transport to the marquez backend that was running. + +![the Marquez graph](mqz_job_running.png) + +Notice that the Status of this job run will be in `RUNNING` state, as it will be in that state until it receives an `end` event that will close off its gaps. That is how the OpenLineage events would work. + +Now, let's change the previous example to have lineage event doing a complete cycle of `START` -> `COMPLETE`: + +```java +package ol.test; + +import io.openlineage.client.OpenLineage; +import io.openlineage.client.OpenLineageClient; +import io.openlineage.client.OpenLineage.RunEvent; +import io.openlineage.client.OpenLineage.InputDataset; +import io.openlineage.client.OpenLineage.Job; +import io.openlineage.client.OpenLineage.JobFacets; +import io.openlineage.client.OpenLineage.OutputDataset; +import io.openlineage.client.OpenLineage.Run; +import io.openlineage.client.OpenLineage.RunFacets; +import io.openlineage.client.OpenLineage.RunEvent.EventType; +import io.openlineage.client.transports.HttpTransport; +import io.openlineage.client.utils.UUIDUtils; + +import java.net.URI; +import java.time.ZoneId; +import java.time.ZonedDateTime; +import java.util.Arrays; +import java.util.List; +import java.util.UUID; + +/** + * My first openlinage client code + */ +public class OpenLineageClientTest +{ + public static void main( String[] args ) + { + try { + + OpenLineageClient client = OpenLineageClient.builder() + .transport( + HttpTransport.builder() + .uri("http://localhost:5000") + .build()) + .build(); + + // create one start event for testing + RunEvent event = buildEvent(EventType.START, null); + + // emit the event + client.emit(event); + + // another event to COMPLETE the run + event = buildEvent(EventType.COMPLETE, event.getRun().getRunId()); + + // emit the second COMPLETE event + client.emit(event); + + } catch (Exception e) { + e.printStackTrace(); + } + } + + // sample code to build event + public static RunEvent buildEvent(EventType eventType, UUID runId) { + ZonedDateTime now = ZonedDateTime.now(ZoneId.of("UTC")); + URI producer = URI.create("producer"); + OpenLineage ol = new OpenLineage(producer); + + if (runId == null) { + runId = UUIDUtils.generateNewUUID(); + } + + // run facets + RunFacets runFacets = + ol.newRunFacetsBuilder() + .nominalTime( + ol.newNominalTimeRunFacetBuilder() + .nominalStartTime(now) + .nominalEndTime(now) + .build()) + .build(); + + // a run is composed of run id, and run facets + Run run = ol.newRunBuilder().runId(runId).facets(runFacets).build(); + + // job facets + JobFacets jobFacets = ol.newJobFacetsBuilder().build(); + + // job + String name = "jobName"; + String namespace = "namespace"; + Job job = ol.newJobBuilder().namespace(namespace).name(name).facets(jobFacets).build(); + + // input dataset + List inputs = + Arrays.asList( + ol.newInputDatasetBuilder() + .namespace("ins") + .name("input") + .facets( + ol.newDatasetFacetsBuilder() + .version(ol.newDatasetVersionDatasetFacet("input-version")) + .build()) + .inputFacets( + ol.newInputDatasetInputFacetsBuilder() + .dataQualityMetrics( + ol.newDataQualityMetricsInputDatasetFacetBuilder() + .rowCount(10L) + .bytes(20L) + .columnMetrics( + ol.newDataQualityMetricsInputDatasetFacetColumnMetricsBuilder() + .put( + "mycol", + ol.newDataQualityMetricsInputDatasetFacetColumnMetricsAdditionalBuilder() + .count(10D) + .distinctCount(10L) + .max(30D) + .min(5D) + .nullCount(1L) + .sum(3000D) + .quantiles( + ol.newDataQualityMetricsInputDatasetFacetColumnMetricsAdditionalQuantilesBuilder() + .put("25", 52D) + .build()) + .build()) + .build()) + .build()) + .build()) + .build()); + // output dataset + List outputs = + Arrays.asList( + ol.newOutputDatasetBuilder() + .namespace("ons") + .name("output") + .facets( + ol.newDatasetFacetsBuilder() + .version(ol.newDatasetVersionDatasetFacet("output-version")) + .build()) + .outputFacets( + ol.newOutputDatasetOutputFacetsBuilder() + .outputStatistics(ol.newOutputStatisticsOutputDatasetFacet(10L, 20L)) + .build()) + .build()); + + // run state update which encapsulates all - with START event in this case + RunEvent runStateUpdate = + ol.newRunEventBuilder() + .eventType(eventType) + .eventTime(now) + .run(run) + .job(job) + .inputs(inputs) + .outputs(outputs) + .build(); + + return runStateUpdate; + } +} +``` +Now, when you run this application, the Marquez would have an output that would looke like this: + +![the Marquez graph](mqz_job_complete.png) + diff --git a/versioned_docs/version-1.24.1/client/mqz_graph.png b/versioned_docs/version-1.24.1/client/mqz_graph.png new file mode 100644 index 0000000000000000000000000000000000000000..03362683ae644aef0c09a4c9382e47154aa9790a GIT binary patch literal 98507 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 Rq3!~H)ReRo(N`_+{U3u$+`Iq) literal 0 HcmV?d00001 diff --git a/versioned_docs/version-1.24.1/client/mqz_graph_example.png b/versioned_docs/version-1.24.1/client/mqz_graph_example.png new file mode 100644 index 0000000000000000000000000000000000000000..571e29f520088529ad5152dbbf782fed59502ea3 GIT binary patch literal 129927 zcmbrm2{@E}_W(>v3aJ#4trAI=?E8{RvQ;YkQufB!*BM4qRD{UBmnB)oHU?u*%Dyi% z7&FLj%*ZywFnpt)<^7)b>HWUz`n#?%_uThyJNx;a-#PcII|kaUN4byE(b2K$+`4{` zj_weYj_v?~iIH|kqCF{qj*kAOvzFE!9W5<^JDzS1&Mx+JbeG=R+Sr`bxpJxX(IXq1 z)-F+zqn>{EUcQXHXA|7q__^_GV^7w%thY%P787TVPcYp7LigeBXE=Z*Qh-t}-deP_ zZC51>6(J^(^tAz7W9-zV#k+LIx1V@O#q2VCU1&RW<01=7q=-h9XMhg@IbS zQQ->LH-+Pm4?SjK;gEj%jP1nZ6%BQlL|dDQWv!P5^iuwrhT8JeXeI6`19!@Xcoht*9Qpu z4KG32fFWfp;Pf! zqFn;*y&nnq16^Fbl>AlC|7@W|yWYPoabDnO6K{a(c@zCR0$OgK_5yO^lH!u*)s6}X z2&j14IVjz`e)Es+v|p;{oxHu>l_Vtm{QSiIq{ZDl9VMFn<9?B*)4KklQ)Za&_s=g;p?^w;07b=vzo|2>nd*B@Zf z0F>B&B5_q*QsS?%X^-&IfV4Ti)&3^UAD#d6;U67UB=$l74^;fZ^Uu39M5`TDk@$;f zYDYDLk`n3YH0X4$Yu@*#U&0;^>Rmsw=-K+rauPkWkT(38QAJdK0LHR$O7`=7wjAt@%Se2Pe3 z5R<@Dx�HPh<6nose~W!PS3x_OrdlC+6dI1{>0P+y6cVU5MZ*0sr*p!f!5L_}3Ze z4it!M{7|~-SWU)--mn(@?^XU`nv_~k5EVYKaOB`e~2_nfQR@1*;_kX-H#5#&f=BGvNpELP^%dcT?PX*8WGH0X}Wi{Fq!;J7vYGxW;F z-286_pgW*;;NboULuv=Mk72a=f;KfxYi+8ek<;&&;XNUWNBwo+Xlxx&6Uh$`&Uy&l-S$bg zAx`B%c5AL!l-@xVS&CxdZfq`&jQgyZwQ+!Ei24gE?>|AH+j~EU&S-d1RaaBB4;~F{ zu?TiUPz|@)Lp7=YLTo#{Ymk&K+q1>N{lcjpK@i zU~ui8#Ol(TM5`Hlkx6b z_)k6jW+8BQob9Tc|55&@6F!j!;-3M*CYY&FRhgGTPp9&Y)R>Pt0qViai17wV)cLe^#y%Jur|UR^22pYqS7on_qsS)C7MyQQxW)7!OsZ4pG+SlvKNe;J8a`6;^u!BR4g zI$gDgxN(z(Unqh@ETN(sq2bW!lnIc{WG8sXD(Vd%SP4{rZmA6t`5^Zv`{5a(-fPm3^G)$Eq`xEF}hv|7QUk?@FW~rGj7xibd zRZ8<7r3tByXck-h5CFz%gO^o7z3O>o!fXTq9QwWjaROS7NSM&bTB>s&)tSB#KOZr8 zDNEDV4TNu4mN7kDj6;v&N0PE#)- zIUK!!Dl5bWcL{pc6TpD^w9JezWIYi()mYcg{whOUseqI#H+x`vgdW~SyF;MnxLziLu;`0RdPb`RN zG3om~U_XffzW^K+s0cAK_Z8e8_FSs>O&0m3k{5&|9o8=e5DQw;9ry#k-eox*>l#c~ z$w_}O)=HygCun=aIL$Y3dwO7|DO%_TOh3@zdVJiM$5)Qy$y$+xnF-$M(i(h>A0 z8PjFmElo_8>e{>NTTeYbC0gs^jMtq`j7jj|NoXH}8;8lJxlR%8r0i{`} zRg+uo3aAf2DR9hSAF5hWJn_KbXhfMt5lzrbAZ8qy$D6{OBoh2F;AB5SN)bKt&Y{T8KXbk>hHy0VKaGtUquKS&lHIL zR1q2)&`FRO8c=J6`4GRE_A)_mrZQin2**Yk3G-HZ_+`D0q$MGVENEH?Dn`HKc!Ri#&f!t?P zLb&RJ9@&xmSWG`e;!*m_H*TN>`_`iyI-WgRyk$=7VH=jR_(P01P1G-jK#%G` *$dd(!|izW0k&yY>rFfTR@%#>7hZhT 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
\n
\n
\n On this page\n
\n
\n\n
\n
\n\n
\n

openlineage.client.client module

\n
\n
\nclass openlineage.client.client.OpenLineageClientOptions(timeout=5.0, verify=True, api_key=None, adapter=None)
\n

Bases: object

\n
\n
Parameters:
\n
    \n
  • timeout (float)

  • \n
  • verify (bool)

  • \n
  • api_key (Optional[str])

  • \n
  • adapter (Optional[HTTPAdapter])

  • \n
\n
\n
\n
\n
\ntimeout: float
\n
\n
\n
\nverify: bool
\n
\n
\n
\napi_key: str
\n
\n
\n
\nadapter: HTTPAdapter
\n
\n
\n
\n
\nclass openlineage.client.client.OpenLineageConfig(transport=_Nothing.NOTHING, facets=_Nothing.NOTHING, filters=_Nothing.NOTHING)
\n

Bases: object

\n
\n
Parameters:
\n
    \n
  • transport (dict[str, Any] | None)

  • \n
  • facets (FacetsConfig)

  • \n
  • filters (list[FilterConfig])

  • \n
\n
\n
\n
\n
\ntransport: dict[str, Any] | None
\n
\n
\n
\nfacets: FacetsConfig
\n
\n
\n
\nfilters: list[FilterConfig]
\n
\n
\n
\nclassmethod from_dict(params)
\n
\n
Parameters:
\n

params (dict[str, Any])

\n
\n
Return type:
\n

OpenLineageConfig

\n
\n
\n
\n
\n
\n
\nclass openlineage.client.client.OpenLineageClient(url=None, options=None, session=None, transport=None, factory=None, *, config=None)
\n

Bases: object

\n
\n
Parameters:
\n
    \n
  • url (str | None)

  • \n
  • options (OpenLineageClientOptions | None)

  • \n
  • session (Session | None)

  • \n
  • transport (Transport | None)

  • \n
  • factory (TransportFactory | None)

  • \n
  • config (dict[str, str] | None)

  • \n
\n
\n
\n
\n
\nDYNAMIC_ENV_VARS_PREFIX = 'OPENLINEAGE__'
\n
\n
\n
\nDEFAULT_URL_TRANSPORT_NAME = 'default_http'
\n
\n
\n
\nclassmethod from_environment()
\n
\n
Return type:
\n

_T

\n
\n
\n
\n
\n
\nclassmethod from_dict(config)
\n
\n
Parameters:
\n

config (dict[str, str])

\n
\n
Return type:
\n

_T

\n
\n
\n
\n
\n
\nfilter_event(event)
\n

Filters jobs according to config-defined events

\n
\n
Parameters:
\n

event (Event)

\n
\n
Return type:
\n

Event | None

\n
\n
\n
\n
\n
\nemit(event)
\n
\n
Parameters:
\n

event (Union[RunEvent, DatasetEvent, JobEvent, RunEvent, DatasetEvent, JobEvent])

\n
\n
Return type:
\n

None

\n
\n
\n
\n
\n
\nproperty config: OpenLineageConfig
\n

Retrieves the OpenLineage configuration.

\n

This property method returns the content of the OpenLineage YAML config file.\nThe configuration is determined by merging sources in the following order of precedence:\n1. User-defined configuration passed to the client constructor.\n2. YAML config file located in one of the following paths:\n- Path specified by the OPENLINEAGE_CONFIG environment variable.\n- Current working directory.\n- $HOME/.openlineage.\n3. Environment variables with the OPENLINEAGE__ prefix.\nIf the configuration is not already loaded, it will be constructed by merging the above sources.\nIn case of a TypeError during the parsing of the configuration, a ValueError will be raised indicating\nthat the structure of the config does not match the expected format.

\n
\n
\n
\nadd_environment_facets(event)
\n

Adds environment variables as facets to the event object.

\n
\n
Parameters:
\n

event (Union[RunEvent, DatasetEvent, JobEvent, RunEvent, DatasetEvent, JobEvent])

\n
\n
Return type:
\n

Union[RunEvent, DatasetEvent, JobEvent, RunEvent, DatasetEvent, JobEvent]

\n
\n
\n
\n
\n
\n
\n

openlineage.client.event_v2 module

\n
\n
\nclass openlineage.client.event_v2.BaseEvent(*, eventTime, producer='')
\n

Bases: RedactMixin

\n
\n
Parameters:
\n
    \n
  • eventTime (str)

  • \n
  • producer (str)

  • \n
\n
\n
\n
\n
\neventTime: str
\n

the time the event occurred at

\n
\n
\n
\nproducer: str
\n
\n
\n
\nschemaURL: str
\n
\n
\n
\nproperty skip_redact: list[str]
\n
\n
\n
\neventtime_check(attribute, value)
\n
\n
Parameters:
\n
    \n
  • attribute (str)

  • \n
  • value (str)

  • \n
\n
\n
Return type:
\n

None

\n
\n
\n
\n
\n
\nproducer_check(attribute, value)
\n
\n
Parameters:
\n
    \n
  • attribute (str)

  • \n
  • value (str)

  • \n
\n
\n
Return type:
\n

None

\n
\n
\n
\n
\n
\nschemaurl_check(attribute, value)
\n
\n
Parameters:
\n
    \n
  • attribute (str)

  • \n
  • value (str)

  • \n
\n
\n
Return type:
\n

None

\n
\n
\n
\n
\n
\n
\nclass openlineage.client.event_v2.RunEvent(*, eventTime, producer='', run, job, eventType=None, inputs=_Nothing.NOTHING, outputs=_Nothing.NOTHING)
\n

Bases: BaseEvent

\n
\n
Parameters:
\n
    \n
  • eventTime (str)

  • \n
  • producer (str)

  • \n
  • run (Run)

  • \n
  • job (Job)

  • \n
  • eventType (EventType | None)

  • \n
  • inputs (list[InputDataset] | None)

  • \n
  • outputs (list[OutputDataset] | None)

  • \n
\n
\n
\n
\n
\nrun: Run
\n
\n
\n
\njob: Job
\n
\n
\n
\neventType: EventType | None
\n

the current transition of the run state. It is required to issue 1 START event and 1 of [ COMPLETE,\nABORT, FAIL ] event per run. Additional events with OTHER eventType can be added to the same run.\nFor example to send additional metadata after the run is complete

\n
\n
\n
\ninputs: list[InputDataset] | None
\n

The set of input datasets.

\n
\n
\n
\noutputs: list[OutputDataset] | None
\n

The set of output datasets.

\n
\n
\n
\n
\nclass openlineage.client.event_v2.JobEvent(*, eventTime, producer='', job, inputs=_Nothing.NOTHING, outputs=_Nothing.NOTHING)
\n

Bases: BaseEvent

\n
\n
Parameters:
\n
\n
\n
\n
\n
\njob: Job
\n
\n
\n
\ninputs: list[InputDataset] | None
\n

The set of input datasets.

\n
\n
\n
\noutputs: list[OutputDataset] | None
\n

The set of output datasets.

\n
\n
\n
\n
\nclass openlineage.client.event_v2.DatasetEvent(*, eventTime, producer='', dataset)
\n

Bases: BaseEvent

\n
\n
Parameters:
\n
    \n
  • eventTime (str)

  • \n
  • producer (str)

  • \n
  • dataset (StaticDataset)

  • \n
\n
\n
\n
\n
\ndataset: StaticDataset
\n
\n
\n
\n
\nopenlineage.client.event_v2.RunState
\n

alias of EventType

\n
\n
\n
\nclass openlineage.client.event_v2.Dataset(namespace, name, *, facets=_Nothing.NOTHING)
\n

Bases: RedactMixin

\n
\n
Parameters:
\n
    \n
  • namespace (str)

  • \n
  • name (str)

  • \n
  • facets (dict[str, DatasetFacet] | None)

  • \n
\n
\n
\n
\n
\nnamespace: str
\n

The namespace containing that dataset

\n
\n
\n
\nname: str
\n

The unique name for that dataset within that namespace

\n
\n
\n
\nfacets: dict[str, DatasetFacet] | None
\n

The facets for this dataset

\n
\n
\n
\n
\nclass openlineage.client.event_v2.InputDataset(namespace, name, inputFacets=_Nothing.NOTHING, *, facets=_Nothing.NOTHING)
\n

Bases: Dataset

\n

An input dataset

\n
\n
Parameters:
\n
\n
\n
\n
\n
\ninputFacets: dict[str, InputDatasetFacet] | None
\n

The input facets for this dataset.

\n
\n
\n
\n
\nclass openlineage.client.event_v2.OutputDataset(namespace, name, outputFacets=_Nothing.NOTHING, *, facets=_Nothing.NOTHING)
\n

Bases: Dataset

\n

An output dataset

\n
\n
Parameters:
\n
\n
\n
\n
\n
\noutputFacets: dict[str, OutputDatasetFacet] | None
\n

The output facets for this dataset

\n
\n
\n
\n
\nclass openlineage.client.event_v2.Run(runId, facets=_Nothing.NOTHING)
\n

Bases: RedactMixin

\n
\n
Parameters:
\n
    \n
  • runId (str)

  • \n
  • facets (dict[str, RunFacet] | None)

  • \n
\n
\n
\n
\n
\nrunId: str
\n

The globally unique ID of the run associated with the job.

\n
\n
\n
\nfacets: dict[str, RunFacet] | None
\n

The run facets.

\n
\n
\n
\nrunid_check(attribute, value)
\n
\n
Parameters:
\n
    \n
  • attribute (str)

  • \n
  • value (str)

  • \n
\n
\n
Return type:
\n

None

\n
\n
\n
\n
\n
\n
\nclass openlineage.client.event_v2.Job(namespace, name, facets=_Nothing.NOTHING)
\n

Bases: RedactMixin

\n
\n
Parameters:
\n
    \n
  • namespace (str)

  • \n
  • name (str)

  • \n
  • facets (dict[str, JobFacet] | None)

  • \n
\n
\n
\n
\n
\nnamespace: str
\n

The namespace containing that job

\n
\n
\n
\nname: str
\n

The unique name for that job within that namespace

\n
\n
\n
\nfacets: dict[str, JobFacet] | None
\n

The job facets.

\n
\n
\n
\n
\nopenlineage.client.event_v2.set_producer(producer)
\n
\n
Parameters:
\n

producer (str)

\n
\n
Return type:
\n

None

\n
\n
\n
\n
\n
\n

openlineage.client.facet module

\n
\n
\nopenlineage.client.facet.set_producer(producer)
\n
\n
Parameters:
\n

producer (str)

\n
\n
Return type:
\n

None

\n
\n
\n
\n
\n
\nclass openlineage.client.facet.BaseFacet
\n

Bases: RedactMixin

\n
\n
\n
\n
\nproperty skip_redact: List[str]
\n
\n
\n
\n
\nclass openlineage.client.facet.NominalTimeRunFacet(nominalStartTime, nominalEndTime=None)
\n

Bases: BaseFacet

\n
\n
Parameters:
\n
    \n
  • nominalStartTime (str)

  • \n
  • nominalEndTime (Optional[str])

  • \n
\n
\n
\n
\n
\nnominalStartTime: str
\n
\n
\n
\nnominalEndTime: Optional[str]
\n
\n
\n
\n
\nclass openlineage.client.facet.ParentRunFacet(run, job)
\n

Bases: BaseFacet

\n
\n
Parameters:
\n
    \n
  • run (Dict[Any, Any])

  • \n
  • job (Dict[Any, Any])

  • \n
\n
\n
\n
\n
\nrun: Dict[Any, Any]
\n
\n
\n
\njob: Dict[Any, Any]
\n
\n
\n
\nclassmethod create(runId, namespace, name)
\n
\n
Parameters:
\n
    \n
  • runId (str)

  • \n
  • namespace (str)

  • \n
  • name (str)

  • \n
\n
\n
Return type:
\n

ParentRunFacet

\n
\n
\n
\n
\n
\n
\nclass openlineage.client.facet.DocumentationJobFacet(description)
\n

Bases: BaseFacet

\n
\n
Parameters:
\n

description (str)

\n
\n
\n
\n
\ndescription: str
\n
\n
\n
\n
\nclass openlineage.client.facet.SourceCodeLocationJobFacet(type, url)
\n

Bases: BaseFacet

\n
\n
Parameters:
\n
    \n
  • type (str)

  • \n
  • url (str)

  • \n
\n
\n
\n
\n
\ntype: str
\n
\n
\n
\nurl: str
\n
\n
\n
\n
\nclass openlineage.client.facet.SqlJobFacet(query)
\n

Bases: BaseFacet

\n
\n
Parameters:
\n

query (str)

\n
\n
\n
\n
\nquery: str
\n
\n
\n
\n
\nclass openlineage.client.facet.DocumentationDatasetFacet(description)
\n

Bases: BaseFacet

\n
\n
Parameters:
\n

description (str)

\n
\n
\n
\n
\ndescription: str
\n
\n
\n
\n
\nclass openlineage.client.facet.SchemaField(name, type, description=None)
\n

Bases: RedactMixin

\n
\n
Parameters:
\n
    \n
  • name (str)

  • \n
  • type (str)

  • \n
  • description (Optional[str])

  • \n
\n
\n
\n
\n
\nname: str
\n
\n
\n
\ntype: str
\n
\n
\n
\ndescription: Optional[str]
\n
\n
\n
\n
\nclass openlineage.client.facet.SchemaDatasetFacet(fields)
\n

Bases: BaseFacet

\n
\n
Parameters:
\n

fields (List[SchemaField])

\n
\n
\n
\n
\nfields: List[SchemaField]
\n
\n
\n
\n
\nclass openlineage.client.facet.DataSourceDatasetFacet(name, uri)
\n

Bases: BaseFacet

\n
\n
Parameters:
\n
    \n
  • name (str)

  • \n
  • uri (str)

  • \n
\n
\n
\n
\n
\nname: str
\n
\n
\n
\nuri: str
\n
\n
\n
\n
\nclass openlineage.client.facet.OutputStatisticsOutputDatasetFacet(rowCount=None, size=None, fileCount=None)
\n

Bases: BaseFacet

\n
\n
Parameters:
\n
    \n
  • rowCount (Optional[int])

  • \n
  • size (Optional[int])

  • \n
  • fileCount (Optional[int])

  • \n
\n
\n
\n
\n
\nrowCount: Optional[int]
\n
\n
\n
\nsize: Optional[int]
\n
\n
\n
\nfileCount: Optional[int]
\n
\n
\n
\n
\nclass openlineage.client.facet.ColumnMetric(nullCount=None, distinctCount=None, sum=None, count=None, min=None, max=None, quantiles=None)
\n

Bases: object

\n
\n
Parameters:
\n
    \n
  • nullCount (Optional[int])

  • \n
  • distinctCount (Optional[int])

  • \n
  • sum (Optional[int])

  • \n
  • count (Optional[int])

  • \n
  • min (Optional[float])

  • \n
  • max (Optional[float])

  • \n
  • quantiles (Optional[Dict[str, float]])

  • \n
\n
\n
\n
\n
\nnullCount: Optional[int]
\n
\n
\n
\ndistinctCount: Optional[int]
\n
\n
\n
\nsum: Optional[int]
\n
\n
\n
\ncount: Optional[int]
\n
\n
\n
\nmin: Optional[float]
\n
\n
\n
\nmax: Optional[float]
\n
\n
\n
\nquantiles: Optional[Dict[str, float]]
\n
\n
\n
\n
\nclass openlineage.client.facet.DataQualityMetricsInputDatasetFacet(rowCount=None, bytes=None, fileCount=None, columnMetrics=_Nothing.NOTHING)
\n

Bases: BaseFacet

\n
\n
Parameters:
\n
    \n
  • rowCount (Optional[int])

  • \n
  • bytes (Optional[int])

  • \n
  • fileCount (Optional[int])

  • \n
  • columnMetrics (Dict[str, ColumnMetric])

  • \n
\n
\n
\n
\n
\nrowCount: Optional[int]
\n
\n
\n
\nbytes: Optional[int]
\n
\n
\n
\nfileCount: Optional[int]
\n
\n
\n
\ncolumnMetrics: Dict[str, ColumnMetric]
\n
\n
\n
\n
\nclass openlineage.client.facet.Assertion(assertion, success, column=None)
\n

Bases: RedactMixin

\n
\n
Parameters:
\n
    \n
  • assertion (str)

  • \n
  • success (bool)

  • \n
  • column (Optional[str])

  • \n
\n
\n
\n
\n
\nassertion: str
\n
\n
\n
\nsuccess: bool
\n
\n
\n
\ncolumn: Optional[str]
\n
\n
\n
\n
\nclass openlineage.client.facet.DataQualityAssertionsDatasetFacet(assertions)
\n

Bases: BaseFacet

\n

This facet represents asserted expectations on dataset or it\u2019s column.

\n
\n
Parameters:
\n

assertions (List[Assertion])

\n
\n
\n
\n
\nassertions: List[Assertion]
\n
\n
\n
\n
\nclass openlineage.client.facet.SourceCodeJobFacet(language, source)
\n

Bases: BaseFacet

\n

This facet represents source code that the job executed.

\n
\n
Parameters:
\n
    \n
  • language (str)

  • \n
  • source (str)

  • \n
\n
\n
\n
\n
\nlanguage: str
\n
\n
\n
\nsource: str
\n
\n
\n
\n
\nclass openlineage.client.facet.ExternalQueryRunFacet(externalQueryId, source)
\n

Bases: BaseFacet

\n
\n
Parameters:
\n
    \n
  • externalQueryId (str)

  • \n
  • source (str)

  • \n
\n
\n
\n
\n
\nexternalQueryId: str
\n
\n
\n
\nsource: str
\n
\n
\n
\n
\nclass openlineage.client.facet.ErrorMessageRunFacet(message, programmingLanguage, stackTrace=None)
\n

Bases: BaseFacet

\n

This facet represents an error message that was the result of a job run.

\n
\n
Parameters:
\n
    \n
  • message (str)

  • \n
  • programmingLanguage (str)

  • \n
  • stackTrace (Optional[str])

  • \n
\n
\n
\n
\n
\nmessage: str
\n
\n
\n
\nprogrammingLanguage: str
\n
\n
\n
\nstackTrace: Optional[str]
\n
\n
\n
\n
\nclass openlineage.client.facet.SymlinksDatasetFacetIdentifiers(namespace, name, type)
\n

Bases: object

\n
\n
Parameters:
\n
    \n
  • namespace (str)

  • \n
  • name (str)

  • \n
  • type (str)

  • \n
\n
\n
\n
\n
\nnamespace: str
\n
\n
\n
\nname: str
\n
\n
\n
\ntype: str
\n
\n
\n
\n
\nclass openlineage.client.facet.SymlinksDatasetFacet(identifiers=_Nothing.NOTHING)
\n

Bases: BaseFacet

\n

This facet represents dataset symlink names.

\n
\n
Parameters:
\n

identifiers (List[SymlinksDatasetFacetIdentifiers])

\n
\n
\n
\n
\nidentifiers: List[SymlinksDatasetFacetIdentifiers]
\n
\n
\n
\n
\nclass openlineage.client.facet.StorageDatasetFacet(storageLayer, fileFormat)
\n

Bases: BaseFacet

\n

This facet represents dataset symlink names.

\n
\n
Parameters:
\n
    \n
  • storageLayer (str)

  • \n
  • fileFormat (str)

  • \n
\n
\n
\n
\n
\nstorageLayer: str
\n
\n
\n
\nfileFormat: str
\n
\n
\n
\n
\nclass openlineage.client.facet.OwnershipJobFacetOwners(name, type=None)
\n

Bases: object

\n
\n
Parameters:
\n
    \n
  • name (str)

  • \n
  • type (Optional[str])

  • \n
\n
\n
\n
\n
\nname: str
\n
\n
\n
\ntype: Optional[str]
\n
\n
\n
\n
\nclass openlineage.client.facet.OwnershipJobFacet(owners=_Nothing.NOTHING)
\n

Bases: BaseFacet

\n

This facet represents ownership of a job.

\n
\n
Parameters:
\n

owners (List[OwnershipJobFacetOwners])

\n
\n
\n
\n
\nowners: List[OwnershipJobFacetOwners]
\n
\n
\n
\n
\nclass openlineage.client.facet.JobTypeJobFacet(processingType, integration, jobType)
\n

Bases: BaseFacet

\n

This facet represents job type properties.

\n
\n
Parameters:
\n
    \n
  • processingType (str)

  • \n
  • integration (str)

  • \n
  • jobType (str)

  • \n
\n
\n
\n
\n
\nprocessingType: str
\n
\n
\n
\nintegration: str
\n
\n
\n
\njobType: str
\n
\n
\n
\n
\nclass openlineage.client.facet.DatasetVersionDatasetFacet(datasetVersion)
\n

Bases: BaseFacet

\n

This facet represents version of a dataset.

\n
\n
Parameters:
\n

datasetVersion (str)

\n
\n
\n
\n
\ndatasetVersion: str
\n
\n
\n
\n
\nclass openlineage.client.facet.LifecycleStateChange(value)
\n

Bases: Enum

\n

An enumeration.

\n
\n
\nALTER = 'ALTER'
\n
\n
\n
\nCREATE = 'CREATE'
\n
\n
\n
\nDROP = 'DROP'
\n
\n
\n
\nOVERWRITE = 'OVERWRITE'
\n
\n
\n
\nRENAME = 'RENAME'
\n
\n
\n
\nTRUNCATE = 'TRUNCATE'
\n
\n
\n
\n
\nclass openlineage.client.facet.LifecycleStateChangeDatasetFacetPreviousIdentifier(name, namespace)
\n

Bases: object

\n
\n
Parameters:
\n
    \n
  • name (str)

  • \n
  • namespace (str)

  • \n
\n
\n
\n
\n
\nname: str
\n
\n
\n
\nnamespace: str
\n
\n
\n
\n
\nclass openlineage.client.facet.LifecycleStateChangeDatasetFacet(lifecycleStateChange, previousIdentifier)
\n

Bases: BaseFacet

\n

This facet represents information of lifecycle changes of a dataset.

\n
\n
Parameters:
\n
\n
\n
\n
\n
\nlifecycleStateChange: LifecycleStateChange
\n
\n
\n
\npreviousIdentifier: LifecycleStateChangeDatasetFacetPreviousIdentifier
\n
\n
\n
\n
\nclass openlineage.client.facet.OwnershipDatasetFacetOwners(name, type)
\n

Bases: object

\n
\n
Parameters:
\n
    \n
  • name (str)

  • \n
  • type (str)

  • \n
\n
\n
\n
\n
\nname: str
\n
\n
\n
\ntype: str
\n
\n
\n
\n
\nclass openlineage.client.facet.OwnershipDatasetFacet(owners=_Nothing.NOTHING)
\n

Bases: BaseFacet

\n

This facet represents ownership of a dataset.

\n
\n
Parameters:
\n

owners (List[OwnershipDatasetFacetOwners])

\n
\n
\n
\n
\nowners: List[OwnershipDatasetFacetOwners]
\n
\n
\n
\n
\nclass openlineage.client.facet.ColumnLineageDatasetFacetFieldsAdditionalInputFields(namespace, name, field)
\n

Bases: RedactMixin

\n
\n
Parameters:
\n
    \n
  • namespace (str)

  • \n
  • name (str)

  • \n
  • field (str)

  • \n
\n
\n
\n
\n
\nnamespace: str
\n
\n
\n
\nname: str
\n
\n
\n
\nfield: str
\n
\n
\n
\n
\nclass openlineage.client.facet.ColumnLineageDatasetFacetFieldsAdditional(inputFields, transformationDescription, transformationType)
\n

Bases: object

\n
\n
Parameters:
\n
\n
\n
\n
\n
\ninputFields: ClassVar[List[ColumnLineageDatasetFacetFieldsAdditionalInputFields]]
\n
\n
\n
\ntransformationDescription: str
\n
\n
\n
\ntransformationType: str
\n
\n
\n
\n
\nclass openlineage.client.facet.ColumnLineageDatasetFacet(fields=_Nothing.NOTHING)
\n

Bases: BaseFacet

\n

This facet contains column lineage of a dataset.

\n
\n
Parameters:
\n

fields (Dict[str, ColumnLineageDatasetFacetFieldsAdditional])

\n
\n
\n
\n
\nfields: Dict[str, ColumnLineageDatasetFacetFieldsAdditional]
\n
\n
\n
\n
\nclass openlineage.client.facet.ProcessingEngineRunFacet(version, name, openlineageAdapterVersion)
\n

Bases: BaseFacet

\n
\n
Parameters:
\n
    \n
  • version (str)

  • \n
  • name (str)

  • \n
  • openlineageAdapterVersion (str)

  • \n
\n
\n
\n
\n
\nversion: str
\n
\n
\n
\nname: str
\n
\n
\n
\nopenlineageAdapterVersion: str
\n
\n
\n
\n
\nclass openlineage.client.facet.ExtractionError(errorMessage, stackTrace, task, taskNumber)
\n

Bases: BaseFacet

\n
\n
Parameters:
\n
    \n
  • errorMessage (str)

  • \n
  • stackTrace (Optional[str])

  • \n
  • task (Optional[str])

  • \n
  • taskNumber (Optional[int])

  • \n
\n
\n
\n
\n
\nerrorMessage: str
\n
\n
\n
\nstackTrace: Optional[str]
\n
\n
\n
\ntask: Optional[str]
\n
\n
\n
\ntaskNumber: Optional[int]
\n
\n
\n
\n
\nclass openlineage.client.facet.ExtractionErrorRunFacet(totalTasks, failedTasks, errors)
\n

Bases: BaseFacet

\n
\n
Parameters:
\n
\n
\n
\n
\n
\ntotalTasks: int
\n
\n
\n
\nfailedTasks: int
\n
\n
\n
\nerrors: List[ExtractionError]
\n
\n
\n
\n
\n

openlineage.client.facet_v2 module

\n
\n
\nclass openlineage.client.facet_v2.BaseFacet(*, producer='')
\n

Bases: RedactMixin

\n

all fields of the base facet are prefixed with _ to avoid name conflicts in facets

\n
\n
Parameters:
\n

producer (str)

\n
\n
\n
\n
\nproperty skip_redact: list[str]
\n
\n
\n
\n
\nclass openlineage.client.facet_v2.DatasetFacet(*, producer='', deleted=None)
\n

Bases: BaseFacet

\n

A Dataset Facet

\n
\n
Parameters:
\n
    \n
  • producer (str)

  • \n
  • deleted (bool | None)

  • \n
\n
\n
\n
\n
\n
\nclass openlineage.client.facet_v2.InputDatasetFacet(*, producer='')
\n

Bases: BaseFacet

\n

An Input Dataset Facet

\n
\n
Parameters:
\n

producer (str)

\n
\n
\n
\n
\n
\nclass openlineage.client.facet_v2.JobFacet(*, producer='', deleted=None)
\n

Bases: BaseFacet

\n

A Job Facet

\n
\n
Parameters:
\n
    \n
  • producer (str)

  • \n
  • deleted (bool | None)

  • \n
\n
\n
\n
\n
\n
\nclass openlineage.client.facet_v2.OutputDatasetFacet(*, producer='')
\n

Bases: BaseFacet

\n

An Output Dataset Facet

\n
\n
Parameters:
\n

producer (str)

\n
\n
\n
\n
\n
\nclass openlineage.client.facet_v2.RunFacet(*, producer='')
\n

Bases: BaseFacet

\n

A Run Facet

\n
\n
Parameters:
\n

producer (str)

\n
\n
\n
\n
\n
\nopenlineage.client.facet_v2.set_producer(producer)
\n
\n
Parameters:
\n

producer (str)

\n
\n
Return type:
\n

None

\n
\n
\n
\n
\n
\n

openlineage.client.filter module

\n
\n
\nclass openlineage.client.filter.FilterConfig(type=None, match=None, regex=None)
\n

Bases: object

\n
\n
Parameters:
\n
    \n
  • type (str | None)

  • \n
  • match (str | None)

  • \n
  • regex (str | None)

  • \n
\n
\n
\n
\n
\ntype: str | None
\n
\n
\n
\nmatch: str | None
\n
\n
\n
\nregex: str | None
\n
\n
\n
\n
\nclass openlineage.client.filter.Filter
\n

Bases: object

\n
\n
\nfilter_event(event)
\n
\n
Parameters:
\n

event (RunEventType)

\n
\n
Return type:
\n

RunEventType | None

\n
\n
\n
\n
\n
\n
\nclass openlineage.client.filter.ExactMatchFilter(match)
\n

Bases: Filter

\n
\n
Parameters:
\n

match (str)

\n
\n
\n
\n
\nfilter_event(event)
\n
\n
Parameters:
\n

event (RunEventType)

\n
\n
Return type:
\n

RunEventType | None

\n
\n
\n
\n
\n
\n
\nclass openlineage.client.filter.RegexFilter(regex)
\n

Bases: Filter

\n
\n
Parameters:
\n

regex (str)

\n
\n
\n
\n
\nfilter_event(event)
\n
\n
Parameters:
\n

event (RunEventType)

\n
\n
Return type:
\n

RunEventType | None

\n
\n
\n
\n
\n
\n
\nopenlineage.client.filter.create_filter(conf)
\n
\n
Parameters:
\n

conf (FilterConfig)

\n
\n
Return type:
\n

Filter | None

\n
\n
\n
\n
\n
\n

openlineage.client.run module

\n
\n
\nclass openlineage.client.run.RunState(value)
\n

Bases: Enum

\n

An enumeration.

\n
\n
\nSTART = 'START'
\n
\n
\n
\nRUNNING = 'RUNNING'
\n
\n
\n
\nCOMPLETE = 'COMPLETE'
\n
\n
\n
\nABORT = 'ABORT'
\n
\n
\n
\nFAIL = 'FAIL'
\n
\n
\n
\nOTHER = 'OTHER'
\n
\n
\n
\n
\nclass openlineage.client.run.Dataset(namespace, name, facets=_Nothing.NOTHING)
\n

Bases: RedactMixin

\n
\n
Parameters:
\n
    \n
  • namespace (str)

  • \n
  • name (str)

  • \n
  • facets (Dict[Any, Any])

  • \n
\n
\n
\n
\n
\nnamespace: str
\n
\n
\n
\nname: str
\n
\n
\n
\nfacets: Dict[Any, Any]
\n
\n
\n
\n
\nclass openlineage.client.run.InputDataset(namespace, name, facets=_Nothing.NOTHING, inputFacets=_Nothing.NOTHING)
\n

Bases: Dataset

\n
\n
Parameters:
\n
    \n
  • namespace (str)

  • \n
  • name (str)

  • \n
  • facets (Dict[Any, Any])

  • \n
  • inputFacets (Dict[Any, Any])

  • \n
\n
\n
\n
\n
\ninputFacets: Dict[Any, Any]
\n
\n
\n
\n
\nclass openlineage.client.run.OutputDataset(namespace, name, facets=_Nothing.NOTHING, outputFacets=_Nothing.NOTHING)
\n

Bases: Dataset

\n
\n
Parameters:
\n
    \n
  • namespace (str)

  • \n
  • name (str)

  • \n
  • facets (Dict[Any, Any])

  • \n
  • outputFacets (Dict[Any, Any])

  • \n
\n
\n
\n
\n
\noutputFacets: Dict[Any, Any]
\n
\n
\n
\n
\nclass openlineage.client.run.DatasetEvent(eventTime, producer, schemaURL, dataset)
\n

Bases: RedactMixin

\n
\n
Parameters:
\n
    \n
  • eventTime (str)

  • \n
  • producer (str)

  • \n
  • schemaURL (str)

  • \n
  • dataset (Dataset)

  • \n
\n
\n
\n
\n
\neventTime: str
\n
\n
\n
\nproducer: str
\n
\n
\n
\nschemaURL: str
\n
\n
\n
\ndataset: Dataset
\n
\n
\n
\n
\nclass openlineage.client.run.Job(namespace, name, facets=_Nothing.NOTHING)
\n

Bases: RedactMixin

\n
\n
Parameters:
\n
    \n
  • namespace (str)

  • \n
  • name (str)

  • \n
  • facets (Dict[Any, Any])

  • \n
\n
\n
\n
\n
\nnamespace: str
\n
\n
\n
\nname: str
\n
\n
\n
\nfacets: Dict[Any, Any]
\n
\n
\n
\n
\nclass openlineage.client.run.JobEvent(eventTime, producer, schemaURL, job, inputs=_Nothing.NOTHING, outputs=_Nothing.NOTHING)
\n

Bases: RedactMixin

\n
\n
Parameters:
\n
    \n
  • eventTime (str)

  • \n
  • producer (str)

  • \n
  • schemaURL (str)

  • \n
  • job (Job)

  • \n
  • inputs (Optional[List[Dataset]])

  • \n
  • outputs (Optional[List[Dataset]])

  • \n
\n
\n
\n
\n
\neventTime: str
\n
\n
\n
\nproducer: str
\n
\n
\n
\nschemaURL: str
\n
\n
\n
\njob: Job
\n
\n
\n
\ninputs: Optional[List[Dataset]]
\n
\n
\n
\noutputs: Optional[List[Dataset]]
\n
\n
\n
\n
\nclass openlineage.client.run.Run(runId, facets=_Nothing.NOTHING)
\n

Bases: RedactMixin

\n
\n
Parameters:
\n
    \n
  • runId (str)

  • \n
  • facets (Dict[Any, Any])

  • \n
\n
\n
\n
\n
\nrunId: str
\n
\n
\n
\nfacets: Dict[Any, Any]
\n
\n
\n
\ncheck(attribute, value)
\n
\n
Parameters:
\n
    \n
  • attribute (str)

  • \n
  • value (str)

  • \n
\n
\n
Return type:
\n

None

\n
\n
\n
\n
\n
\n
\nclass openlineage.client.run.RunEvent(eventType, eventTime, run, job, producer, inputs=_Nothing.NOTHING, outputs=_Nothing.NOTHING, schemaURL='https://openlineage.io/spec/1-0-5/OpenLineage.json#/definitions/RunEvent')
\n

Bases: RedactMixin

\n
\n
Parameters:
\n
    \n
  • eventType (RunState)

  • \n
  • eventTime (str)

  • \n
  • run (Run)

  • \n
  • job (Job)

  • \n
  • producer (str)

  • \n
  • inputs (Optional[List[Dataset]])

  • \n
  • outputs (Optional[List[Dataset]])

  • \n
  • schemaURL (str)

  • \n
\n
\n
\n
\n
\neventType: RunState
\n
\n
\n
\neventTime: str
\n
\n
\n
\nrun: Run
\n
\n
\n
\njob: Job
\n
\n
\n
\nproducer: str
\n
\n
\n
\ninputs: Optional[List[Dataset]]
\n
\n
\n
\noutputs: Optional[List[Dataset]]
\n
\n
\n
\nschemaURL: str
\n
\n
\n
\ncheck(attribute, value)
\n
\n
Parameters:
\n
    \n
  • attribute (str)

  • \n
  • value (str)

  • \n
\n
\n
Return type:
\n

None

\n
\n
\n
\n
\n
\n
\n

openlineage.client.serde module

\n
\n
\nclass openlineage.client.serde.Serde
\n

Bases: object

\n
\n
\nclassmethod remove_nulls_and_enums(obj)
\n
\n
Parameters:
\n

obj (Any)

\n
\n
Return type:
\n

Any

\n
\n
\n
\n
\n
\nclassmethod to_dict(obj)
\n
\n
Parameters:
\n

obj (Any)

\n
\n
Return type:
\n

dict[Any, Any]

\n
\n
\n
\n
\n
\nclassmethod to_json(obj)
\n
\n
Parameters:
\n

obj (Any)

\n
\n
Return type:
\n

str

\n
\n
\n
\n
\n
\n
\n

openlineage.client.utils module

\n
\n
\nopenlineage.client.utils.import_from_string(path)
\n
\n
Parameters:
\n

path (str)

\n
\n
Return type:
\n

type[Any]

\n
\n
\n
\n
\n
\nopenlineage.client.utils.try_import_from_string(path)
\n
\n
Parameters:
\n

path (str)

\n
\n
Return type:
\n

type[Any] | None

\n
\n
\n
\n
\n
\nopenlineage.client.utils.get_only_specified_fields(clazz, params)
\n
\n
Parameters:
\n
    \n
  • clazz (type[Any])

  • \n
  • params (dict[str, Any])

  • \n
\n
\n
Return type:
\n

dict[str, Any]

\n
\n
\n
\n
\n
\nopenlineage.client.utils.deep_merge_dicts(dict1, dict2)
\n

Deep merges two dictionaries.

\n

This function merges two dictionaries while handling nested dictionaries.\nFor keys that exist in both dictionaries, the values from dict2 take precedence.\nIf a key exists in both dictionaries and the values are dictionaries themselves,\nthey are merged recursively.\nThis function merges only dictionaries. If key is of different type, e.g. list\nit does not work properly.

\n
\n
Parameters:
\n
    \n
  • dict1 (dict[Any, Any])

  • \n
  • dict2 (dict[Any, Any])

  • \n
\n
\n
Return type:
\n

dict[Any, Any]

\n
\n
\n
\n
\n
\nclass openlineage.client.utils.RedactMixin
\n

Bases: object

\n
\n
\nproperty skip_redact: list[str]
\n
\n
\n
\n
\n

openlineage.client.uuid module

\n
\n
\nopenlineage.client.uuid.generate_new_uuid(instant=None)
\n

Generate new UUID for an instant of time. Each function call returns a new UUID value.

\n

UUID version is an implementation detail, and should not be relied on.\nFor now it is [UUIDv7](https://datatracker.ietf.org/doc/rfc9562/), so for increasing instant values,\nreturned UUID is always greater than previous one.

\n

Using uuid6 lib implementation (MIT License), with few changes:\n* oittaa/uuid6-python\n* oittaa/uuid6-python

\n

Added in v1.15.0

\n
\n
Parameters:
\n

instant (datetime | None) \u2013 instant of time used to generate UUID. If not provided, current time is used.

\n
\n
Return type:
\n

UUID

\n
\n
Returns:
\n

UUID

\n
\n
\n
\n
\n
\nopenlineage.client.uuid.generate_static_uuid(instant, data)
\n

Generate UUID for instant of time and input data.\nCalling function with same arguments always produces the same result.

\n

UUID version is an implementation detail, and **should not* be relied on.\nFor now it is [UUIDv7](https://datatracker.ietf.org/doc/rfc9562/), so for increasing instant values,\nreturned UUID is always greater than previous one. The only difference from RFC 9562 is that\nleast significant bytes are not random, but instead a SHA-1 hash of input data.

\n

Using uuid6 lib implementation (MIT License), with few changes:\n* oittaa/uuid6-python\n* oittaa/uuid6-python

\n

Added in v1.15.0

\n
\n
Parameters:
\n
    \n
  • instant (datetime) \u2013 instant of time used to generate UUID. If not provided, current time is used.

  • \n
  • data (bytes) \u2013 input data to generate random part from.

  • \n
\n
\n
Return type:
\n

UUID

\n
\n
Returns:
\n

UUID

\n
\n
\n
\n
\n
\n

openlineage.client.generated.base module

\n
\n
\nopenlineage.client.generated.base.set_producer(producer)
\n
\n
Parameters:
\n

producer (str)

\n
\n
Return type:
\n

None

\n
\n
\n
\n
\n
\nclass openlineage.client.generated.base.BaseEvent(*, eventTime, producer='')
\n

Bases: RedactMixin

\n
\n
Parameters:
\n
    \n
  • eventTime (str)

  • \n
  • producer (str)

  • \n
\n
\n
\n
\n
\neventTime: str
\n

the time the event occurred at

\n
\n
\n
\nproducer: str
\n
\n
\n
\nschemaURL: str
\n
\n
\n
\nproperty skip_redact
\n
\n
\n
\neventtime_check(attribute, value)
\n
\n
Parameters:
\n
    \n
  • attribute (str)

  • \n
  • value (str)

  • \n
\n
\n
Return type:
\n

None

\n
\n
\n
\n
\n
\nproducer_check(attribute, value)
\n
\n
Parameters:
\n
    \n
  • attribute (str)

  • \n
  • value (str)

  • \n
\n
\n
Return type:
\n

None

\n
\n
\n
\n
\n
\nschemaurl_check(attribute, value)
\n
\n
Parameters:
\n
    \n
  • attribute (str)

  • \n
  • value (str)

  • \n
\n
\n
Return type:
\n

None

\n
\n
\n
\n
\n
\n
\nclass openlineage.client.generated.base.BaseFacet(*, producer='')
\n

Bases: RedactMixin

\n

all fields of the base facet are prefixed with _ to avoid name conflicts in facets

\n
\n
Parameters:
\n

producer (str)

\n
\n
\n
\n
\nproperty skip_redact
\n
\n
\n
\n
\nclass openlineage.client.generated.base.Dataset(namespace, name, *, facets=_Nothing.NOTHING)
\n

Bases: RedactMixin

\n
\n
Parameters:
\n
    \n
  • namespace (str)

  • \n
  • name (str)

  • \n
  • facets (dict[str, DatasetFacet] | None)

  • \n
\n
\n
\n
\n
\nnamespace: str
\n

The namespace containing that dataset

\n
\n
\n
\nname: str
\n

The unique name for that dataset within that namespace

\n
\n
\n
\nfacets: dict[str, DatasetFacet] | None
\n

The facets for this dataset

\n
\n
\n
\n
\nclass openlineage.client.generated.base.DatasetEvent(*, eventTime, producer='', dataset)
\n

Bases: BaseEvent

\n
\n
Parameters:
\n
    \n
  • eventTime (str)

  • \n
  • producer (str)

  • \n
  • dataset (StaticDataset)

  • \n
\n
\n
\n
\n
\ndataset: StaticDataset
\n
\n
\n
\n
\nclass openlineage.client.generated.base.DatasetFacet(*, producer='', deleted=None)
\n

Bases: BaseFacet

\n

A Dataset Facet

\n
\n
Parameters:
\n
    \n
  • producer (str)

  • \n
  • deleted (bool | None)

  • \n
\n
\n
\n
\n
\n
\nclass openlineage.client.generated.base.EventType(value)
\n

Bases: Enum

\n

the current transition of the run state. It is required to issue 1 START event and 1 of [ COMPLETE,\nABORT, FAIL ] event per run. Additional events with OTHER eventType can be added to the same run.\nFor example to send additional metadata after the run is complete

\n
\n
\nSTART = 'START'
\n
\n
\n
\nRUNNING = 'RUNNING'
\n
\n
\n
\nCOMPLETE = 'COMPLETE'
\n
\n
\n
\nABORT = 'ABORT'
\n
\n
\n
\nFAIL = 'FAIL'
\n
\n
\n
\nOTHER = 'OTHER'
\n
\n
\n
\n
\nclass openlineage.client.generated.base.InputDataset(namespace, name, inputFacets=_Nothing.NOTHING, *, facets=_Nothing.NOTHING)
\n

Bases: Dataset

\n

An input dataset

\n
\n
\ninputFacets: dict[str, InputDatasetFacet] | None
\n

The input facets for this dataset.

\n
\n
\n
\n
\nclass openlineage.client.generated.base.InputDatasetFacet(*, producer='')
\n

Bases: BaseFacet

\n

An Input Dataset Facet

\n
\n
Parameters:
\n

producer (str)

\n
\n
\n
\n
\n
\nclass openlineage.client.generated.base.Job(namespace, name, facets=_Nothing.NOTHING)
\n

Bases: RedactMixin

\n
\n
Parameters:
\n
    \n
  • namespace (str)

  • \n
  • name (str)

  • \n
  • facets (dict[str, JobFacet] | None)

  • \n
\n
\n
\n
\n
\nnamespace: str
\n

The namespace containing that job

\n
\n
\n
\nname: str
\n

The unique name for that job within that namespace

\n
\n
\n
\nfacets: dict[str, JobFacet] | None
\n

The job facets.

\n
\n
\n
\n
\nclass openlineage.client.generated.base.JobEvent(*, eventTime, producer='', job, inputs=_Nothing.NOTHING, outputs=_Nothing.NOTHING)
\n

Bases: BaseEvent

\n
\n
\njob: Job
\n
\n
\n
\ninputs: list[InputDataset] | None
\n

The set of input datasets.

\n
\n
\n
\noutputs: list[OutputDataset] | None
\n

The set of output datasets.

\n
\n
\n
\n
\nclass openlineage.client.generated.base.JobFacet(*, producer='', deleted=None)
\n

Bases: BaseFacet

\n

A Job Facet

\n
\n
Parameters:
\n
    \n
  • producer (str)

  • \n
  • deleted (bool | None)

  • \n
\n
\n
\n
\n
\n
\nclass openlineage.client.generated.base.OutputDataset(namespace, name, outputFacets=_Nothing.NOTHING, *, facets=_Nothing.NOTHING)
\n

Bases: Dataset

\n

An output dataset

\n
\n
\noutputFacets: dict[str, OutputDatasetFacet] | None
\n

The output facets for this dataset

\n
\n
\n
\n
\nclass openlineage.client.generated.base.OutputDatasetFacet(*, producer='')
\n

Bases: BaseFacet

\n

An Output Dataset Facet

\n
\n
Parameters:
\n

producer (str)

\n
\n
\n
\n
\n
\nclass openlineage.client.generated.base.Run(runId, facets=_Nothing.NOTHING)
\n

Bases: RedactMixin

\n
\n
Parameters:
\n
    \n
  • runId (str)

  • \n
  • facets (dict[str, RunFacet] | None)

  • \n
\n
\n
\n
\n
\nrunId: str
\n

The globally unique ID of the run associated with the job.

\n
\n
\n
\nfacets: dict[str, RunFacet] | None
\n

The run facets.

\n
\n
\n
\nrunid_check(attribute, value)
\n
\n
Parameters:
\n
    \n
  • attribute (str)

  • \n
  • value (str)

  • \n
\n
\n
Return type:
\n

None

\n
\n
\n
\n
\n
\n
\nclass openlineage.client.generated.base.RunEvent(*, eventTime, producer='', run, job, eventType=None, inputs=_Nothing.NOTHING, outputs=_Nothing.NOTHING)
\n

Bases: BaseEvent

\n
\n
Parameters:
\n
    \n
  • eventTime (str)

  • \n
  • producer (str)

  • \n
  • run (Run)

  • \n
  • job (Job)

  • \n
  • eventType (EventType | None)

  • \n
  • inputs (list[InputDataset] | None)

  • \n
  • outputs (list[OutputDataset] | None)

  • \n
\n
\n
\n
\n
\nrun: Run
\n
\n
\n
\njob: Job
\n
\n
\n
\neventType: EventType | None
\n

the current transition of the run state. It is required to issue 1 START event and 1 of [ COMPLETE,\nABORT, FAIL ] event per run. Additional events with OTHER eventType can be added to the same run.\nFor example to send additional metadata after the run is complete

\n
\n
\n
\ninputs: list[InputDataset] | None
\n

The set of input datasets.

\n
\n
\n
\noutputs: list[OutputDataset] | None
\n

The set of output datasets.

\n
\n
\n
\n
\nclass openlineage.client.generated.base.RunFacet(*, producer='')
\n

Bases: BaseFacet

\n

A Run Facet

\n
\n
Parameters:
\n

producer (str)

\n
\n
\n
\n
\n
\nclass openlineage.client.generated.base.StaticDataset(namespace, name, *, facets=_Nothing.NOTHING)
\n

Bases: Dataset

\n

A Dataset sent within static metadata events

\n
\n
Parameters:
\n
    \n
  • namespace (str)

  • \n
  • name (str)

  • \n
  • facets (dict[str, DatasetFacet] | None)

  • \n
\n
\n
\n
\n
\n
\n

openlineage.client.generated.column_lineage_dataset module

\n
\n
\nclass openlineage.client.generated.column_lineage_dataset.ColumnLineageDatasetFacet(fields, dataset=_Nothing.NOTHING, *, producer='', deleted=None)
\n

Bases: DatasetFacet

\n
\n
Parameters:
\n
    \n
  • fields (dict[str, Fields])

  • \n
  • dataset (list[InputField] | None)

  • \n
  • producer (str)

  • \n
  • deleted (bool | None)

  • \n
\n
\n
\n
\n
\nfields: dict[str, Fields]
\n

Column level lineage that maps output fields into input fields used to evaluate them.

\n
\n
\n
\ndataset: list[InputField] | None
\n

Column level lineage that affects the whole dataset. This includes filtering, sorting, grouping\n(aggregates), joining, window functions, etc.

\n
\n
\n
\n
\nclass openlineage.client.generated.column_lineage_dataset.Fields(inputFields, transformationDescription=None, transformationType=None)
\n

Bases: RedactMixin

\n
\n
Parameters:
\n
    \n
  • inputFields (list[InputField])

  • \n
  • transformationDescription (str | None)

  • \n
  • transformationType (str | None)

  • \n
\n
\n
\n
\n
\ninputFields: list[InputField]
\n
\n
\n
\ntransformationDescription: str | None
\n

a string representation of the transformation applied

\n
\n
\n
\ntransformationType: str | None
\n

no\noriginal data available (like a hash of PII for example)

\n
\n
Type:
\n

IDENTITY|MASKED reflects a clearly defined behavior. IDENTITY

\n
\n
Type:
\n

exact same as input; MASKED

\n
\n
\n
\n
\n
\n
\nclass openlineage.client.generated.column_lineage_dataset.InputField(namespace, name, field, transformations=_Nothing.NOTHING)
\n

Bases: RedactMixin

\n

Represents a single dependency on some field (column).

\n
\n
Parameters:
\n
    \n
  • namespace (str)

  • \n
  • name (str)

  • \n
  • field (str)

  • \n
  • transformations (list[Transformation] | None)

  • \n
\n
\n
\n
\n
\nnamespace: str
\n

The input dataset namespace

\n
\n
\n
\nname: str
\n

The input dataset name

\n
\n
\n
\nfield: str
\n

The input field

\n
\n
\n
\ntransformations: list[Transformation] | None
\n
\n
\n
\n
\nclass openlineage.client.generated.column_lineage_dataset.Transformation(type, subtype=None, description=None, masking=None)
\n

Bases: RedactMixin

\n
\n
Parameters:
\n
    \n
  • type (str)

  • \n
  • subtype (str | None)

  • \n
  • description (str | None)

  • \n
  • masking (bool | None)

  • \n
\n
\n
\n
\n
\ntype: str
\n

DIRECT, INDIRECT

\n
\n
Type:
\n

The type of the transformation. Allowed values are

\n
\n
\n
\n
\n
\nsubtype: str | None
\n

The subtype of the transformation

\n
\n
\n
\ndescription: str | None
\n

a string representation of the transformation applied

\n
\n
\n
\nmasking: bool | None
\n

is transformation masking the data or not

\n
\n
\n
\n
\n

openlineage.client.generated.data_quality_assertions_dataset module

\n
\n
\nclass openlineage.client.generated.data_quality_assertions_dataset.Assertion(assertion, success, column=None)
\n

Bases: RedactMixin

\n
\n
Parameters:
\n
    \n
  • assertion (str)

  • \n
  • success (bool)

  • \n
  • column (str | None)

  • \n
\n
\n
\n
\n
\nassertion: str
\n

Type of expectation test that dataset is subjected to

\n
\n
\n
\nsuccess: bool
\n
\n
\n
\ncolumn: str | None
\n

Column that expectation is testing. It should match the name provided in SchemaDatasetFacet. If\ncolumn field is empty, then expectation refers to whole dataset.

\n
\n
\n
\n
\nclass openlineage.client.generated.data_quality_assertions_dataset.DataQualityAssertionsDatasetFacet(assertions, *, producer='')
\n

Bases: InputDatasetFacet

\n

list of tests performed on dataset or dataset columns, and their results

\n
\n
Parameters:
\n
    \n
  • assertions (list[Assertion])

  • \n
  • producer (str)

  • \n
\n
\n
\n
\n
\nassertions: list[Assertion]
\n
\n
\n
\n
\n

openlineage.client.generated.data_quality_metrics_input_dataset module

\n
\n
\nclass openlineage.client.generated.data_quality_metrics_input_dataset.ColumnMetrics(nullCount=None, distinctCount=None, sum=None, count=None, min=None, max=None, quantiles=_Nothing.NOTHING)
\n

Bases: RedactMixin

\n
\n
Parameters:
\n
    \n
  • nullCount (int | None)

  • \n
  • distinctCount (int | None)

  • \n
  • sum (float | None)

  • \n
  • count (float | None)

  • \n
  • min (float | None)

  • \n
  • max (float | None)

  • \n
  • quantiles (dict[str, float] | None)

  • \n
\n
\n
\n
\n
\nnullCount: int | None
\n

The number of null values in this column for the rows evaluated

\n
\n
\n
\ndistinctCount: int | None
\n

The number of distinct values in this column for the rows evaluated

\n
\n
\n
\nsum: float | None
\n

The total sum of values in this column for the rows evaluated

\n
\n
\n
\ncount: float | None
\n

The number of values in this column

\n
\n
\n
\nmin: float | None
\n
\n
\n
\nmax: float | None
\n
\n
\n
\nquantiles: dict[str, float] | None
\n

0.1 0.25 0.5 0.75 1

\n
\n
Type:
\n

The property key is the quantile. Examples

\n
\n
\n
\n
\n
\n
\nclass openlineage.client.generated.data_quality_metrics_input_dataset.DataQualityMetricsInputDatasetFacet(columnMetrics, rowCount=None, bytes=None, fileCount=None, *, producer='')
\n

Bases: InputDatasetFacet

\n
\n
Parameters:
\n
    \n
  • columnMetrics (dict[str, ColumnMetrics])

  • \n
  • rowCount (int | None)

  • \n
  • bytes (int | None)

  • \n
  • fileCount (int | None)

  • \n
  • producer (str)

  • \n
\n
\n
\n
\n
\ncolumnMetrics: dict[str, ColumnMetrics]
\n

The property key is the column name

\n
\n
\n
\nrowCount: int | None
\n

The number of rows evaluated

\n
\n
\n
\nbytes: int | None
\n

The size in bytes

\n
\n
\n
\nfileCount: int | None
\n

The number of files evaluated

\n
\n
\n
\n
\n

openlineage.client.generated.dataset_version_dataset module

\n
\n
\nclass openlineage.client.generated.dataset_version_dataset.DatasetVersionDatasetFacet(datasetVersion, *, producer='', deleted=None)
\n

Bases: DatasetFacet

\n
\n
Parameters:
\n
    \n
  • datasetVersion (str)

  • \n
  • producer (str)

  • \n
  • deleted (bool | None)

  • \n
\n
\n
\n
\n
\ndatasetVersion: str
\n

The version of the dataset.

\n
\n
\n
\n
\n

openlineage.client.generated.datasource_dataset module

\n
\n
\nclass openlineage.client.generated.datasource_dataset.DatasourceDatasetFacet(name=None, uri=None, *, producer='', deleted=None)
\n

Bases: DatasetFacet

\n
\n
Parameters:
\n
    \n
  • name (str | None)

  • \n
  • uri (str | None)

  • \n
  • producer (str)

  • \n
  • deleted (bool | None)

  • \n
\n
\n
\n
\n
\nname: str | None
\n
\n
\n
\nuri: str | None
\n
\n
\n
\nuri_check(attribute, value)
\n
\n
Parameters:
\n
    \n
  • attribute (str)

  • \n
  • value (str)

  • \n
\n
\n
Return type:
\n

None

\n
\n
\n
\n
\n
\n
\n

openlineage.client.generated.documentation_dataset module

\n
\n
\nclass openlineage.client.generated.documentation_dataset.DocumentationDatasetFacet(description, *, producer='', deleted=None)
\n

Bases: DatasetFacet

\n
\n
Parameters:
\n
    \n
  • description (str)

  • \n
  • producer (str)

  • \n
  • deleted (bool | None)

  • \n
\n
\n
\n
\n
\ndescription: str
\n

The description of the dataset.

\n
\n
\n
\n
\n

openlineage.client.generated.documentation_job module

\n
\n
\nclass openlineage.client.generated.documentation_job.DocumentationJobFacet(description, *, producer='', deleted=None)
\n

Bases: JobFacet

\n
\n
Parameters:
\n
    \n
  • description (str)

  • \n
  • producer (str)

  • \n
  • deleted (bool | None)

  • \n
\n
\n
\n
\n
\ndescription: str
\n

The description of the job.

\n
\n
\n
\n
\n

openlineage.client.generated.error_message_run module

\n
\n
\nclass openlineage.client.generated.error_message_run.ErrorMessageRunFacet(message, programmingLanguage, stackTrace=None, *, producer='')
\n

Bases: RunFacet

\n
\n
Parameters:
\n
    \n
  • message (str)

  • \n
  • programmingLanguage (str)

  • \n
  • stackTrace (str | None)

  • \n
  • producer (str)

  • \n
\n
\n
\n
\n
\nmessage: str
\n

A human-readable string representing error message generated by observed system

\n
\n
\n
\nprogrammingLanguage: str
\n

Programming language the observed system uses.

\n
\n
\n
\nstackTrace: str | None
\n

A language-specific stack trace generated by observed system

\n
\n
\n
\n
\n

openlineage.client.generated.external_query_run module

\n
\n
\nclass openlineage.client.generated.external_query_run.ExternalQueryRunFacet(externalQueryId, source, *, producer='')
\n

Bases: RunFacet

\n
\n
Parameters:
\n
    \n
  • externalQueryId (str)

  • \n
  • source (str)

  • \n
  • producer (str)

  • \n
\n
\n
\n
\n
\nexternalQueryId: str
\n

Identifier for the external system

\n
\n
\n
\nsource: str
\n

source of the external query

\n
\n
\n
\n
\n

openlineage.client.generated.extraction_error_run module

\n
\n
\nclass openlineage.client.generated.extraction_error_run.Error(errorMessage, stackTrace=None, task=None, taskNumber=None)
\n

Bases: RedactMixin

\n
\n
Parameters:
\n
    \n
  • errorMessage (str)

  • \n
  • stackTrace (str | None)

  • \n
  • task (str | None)

  • \n
  • taskNumber (int | None)

  • \n
\n
\n
\n
\n
\nerrorMessage: str
\n

Text representation of extraction error message.

\n
\n
\n
\nstackTrace: str | None
\n

Stack trace of extraction error message

\n
\n
\n
\ntask: str | None
\n

Text representation of task that failed. This can be, for example, SQL statement that parser could\nnot interpret.

\n
\n
\n
\ntaskNumber: int | None
\n

Order of task (counted from 0).

\n
\n
\n
\n
\nclass openlineage.client.generated.extraction_error_run.ExtractionErrorRunFacet(totalTasks, failedTasks, errors, *, producer='')
\n

Bases: RunFacet

\n
\n
Parameters:
\n
    \n
  • totalTasks (int)

  • \n
  • failedTasks (int)

  • \n
  • errors (list[Error])

  • \n
  • producer (str)

  • \n
\n
\n
\n
\n
\ntotalTasks: int
\n

The number of distinguishable tasks in a run that were processed by OpenLineage, whether\nsuccessfully or not. Those could be, for example, distinct SQL statements.

\n
\n
\n
\nfailedTasks: int
\n

The number of distinguishable tasks in a run that were processed not successfully by OpenLineage.\nThose could be, for example, distinct SQL statements.

\n
\n
\n
\nerrors: list[Error]
\n
\n
\n
\n
\n

openlineage.client.generated.job_type_job module

\n
\n
\nclass openlineage.client.generated.job_type_job.JobTypeJobFacet(processingType, integration, jobType=None, *, producer='', deleted=None)
\n

Bases: JobFacet

\n
\n
Parameters:
\n
    \n
  • processingType (str)

  • \n
  • integration (str)

  • \n
  • jobType (str | None)

  • \n
  • producer (str)

  • \n
  • deleted (bool | None)

  • \n
\n
\n
\n
\n
\nprocessingType: str
\n

BATCH or STREAMING

\n
\n
Type:
\n

Job processing type like

\n
\n
\n
\n
\n
\nintegration: str
\n

for example SPARK|DBT|AIRFLOW|FLINK

\n
\n
Type:
\n

OpenLineage integration type of this job

\n
\n
\n
\n
\n
\njobType: str | None
\n

QUERY|COMMAND|DAG|TASK|JOB|MODEL. This is an integration-specific field.

\n
\n
Type:
\n

Run type, for example

\n
\n
\n
\n
\n
\n
\n

openlineage.client.generated.lifecycle_state_change_dataset module

\n
\n
\nclass openlineage.client.generated.lifecycle_state_change_dataset.LifecycleStateChange(value)
\n

Bases: Enum

\n

The lifecycle state change.

\n
\n
\nALTER = 'ALTER'
\n
\n
\n
\nCREATE = 'CREATE'
\n
\n
\n
\nDROP = 'DROP'
\n
\n
\n
\nOVERWRITE = 'OVERWRITE'
\n
\n
\n
\nRENAME = 'RENAME'
\n
\n
\n
\nTRUNCATE = 'TRUNCATE'
\n
\n
\n
\n
\nclass openlineage.client.generated.lifecycle_state_change_dataset.LifecycleStateChangeDatasetFacet(lifecycleStateChange, previousIdentifier=None, *, producer='', deleted=None)
\n

Bases: DatasetFacet

\n
\n
Parameters:
\n
    \n
  • lifecycleStateChange (LifecycleStateChange)

  • \n
  • previousIdentifier (PreviousIdentifier | None)

  • \n
  • producer (str)

  • \n
  • deleted (bool | None)

  • \n
\n
\n
\n
\n
\nlifecycleStateChange: LifecycleStateChange
\n

The lifecycle state change.

\n
\n
\n
\npreviousIdentifier: PreviousIdentifier | None
\n

Previous name of the dataset in case of renaming it.

\n
\n
\n
\n
\nclass openlineage.client.generated.lifecycle_state_change_dataset.PreviousIdentifier(name, namespace)
\n

Bases: RedactMixin

\n

Previous name of the dataset in case of renaming it.

\n
\n
Parameters:
\n
    \n
  • name (str)

  • \n
  • namespace (str)

  • \n
\n
\n
\n
\n
\nname: str
\n
\n
\n
\nnamespace: str
\n
\n
\n
\n
\n

openlineage.client.generated.nominal_time_run module

\n
\n
\nclass openlineage.client.generated.nominal_time_run.NominalTimeRunFacet(nominalStartTime, nominalEndTime=None, *, producer='')
\n

Bases: RunFacet

\n
\n
Parameters:
\n
    \n
  • nominalStartTime (str)

  • \n
  • nominalEndTime (str | None)

  • \n
  • producer (str)

  • \n
\n
\n
\n
\n
\nnominalStartTime: str
\n

//en.wikipedia.org/wiki/ISO_8601) timestamp representing the nominal start time\n(included) of the run. AKA the schedule time

\n
\n
Type:
\n

An [ISO-8601](https

\n
\n
\n
\n
\n
\nnominalEndTime: str | None
\n

//en.wikipedia.org/wiki/ISO_8601) timestamp representing the nominal end time\n(excluded) of the run. (Should be the nominal start time of the next run)

\n
\n
Type:
\n

An [ISO-8601](https

\n
\n
\n
\n
\n
\nnominalstarttime_check(attribute, value)
\n
\n
Parameters:
\n
    \n
  • attribute (str)

  • \n
  • value (str)

  • \n
\n
\n
Return type:
\n

None

\n
\n
\n
\n
\n
\nnominalendtime_check(attribute, value)
\n
\n
Parameters:
\n
    \n
  • attribute (str)

  • \n
  • value (str)

  • \n
\n
\n
Return type:
\n

None

\n
\n
\n
\n
\n
\n
\n

openlineage.client.generated.output_statistics_output_dataset module

\n
\n
\nclass openlineage.client.generated.output_statistics_output_dataset.OutputStatisticsOutputDatasetFacet(rowCount=None, size=None, fileCount=None, *, producer='')
\n

Bases: OutputDatasetFacet

\n
\n
Parameters:
\n
    \n
  • rowCount (int | None)

  • \n
  • size (int | None)

  • \n
  • fileCount (int | None)

  • \n
  • producer (str)

  • \n
\n
\n
\n
\n
\nrowCount: int | None
\n

The number of rows written to the dataset

\n
\n
\n
\nsize: int | None
\n

The size in bytes written to the dataset

\n
\n
\n
\nfileCount: int | None
\n

The number of files written to the dataset

\n
\n
\n
\n
\n

openlineage.client.generated.ownership_dataset module

\n
\n
\nclass openlineage.client.generated.ownership_dataset.Owner(name, type=None)
\n

Bases: RedactMixin

\n
\n
Parameters:
\n
    \n
  • name (str)

  • \n
  • type (str | None)

  • \n
\n
\n
\n
\n
\nname: str
\n

the identifier of the owner of the Dataset. It is recommended to define this as a URN. For example\napplication:foo, user:jdoe, team:data

\n
\n
\n
\ntype: str | None
\n

The type of ownership (optional)

\n
\n
\n
\n
\nclass openlineage.client.generated.ownership_dataset.OwnershipDatasetFacet(owners=_Nothing.NOTHING, *, producer='', deleted=None)
\n

Bases: DatasetFacet

\n
\n
Parameters:
\n
    \n
  • owners (list[Owner] | None)

  • \n
  • producer (str)

  • \n
  • deleted (bool | None)

  • \n
\n
\n
\n
\n
\nowners: list[Owner] | None
\n

The owners of the dataset.

\n
\n
\n
\n
\n

openlineage.client.generated.ownership_job module

\n
\n
\nclass openlineage.client.generated.ownership_job.Owner(name, type=None)
\n

Bases: RedactMixin

\n
\n
Parameters:
\n
    \n
  • name (str)

  • \n
  • type (str | None)

  • \n
\n
\n
\n
\n
\nname: str
\n

the identifier of the owner of the Job. It is recommended to define this as a URN. For example\napplication:foo, user:jdoe, team:data

\n
\n
\n
\ntype: str | None
\n

The type of ownership (optional)

\n
\n
\n
\n
\nclass openlineage.client.generated.ownership_job.OwnershipJobFacet(owners=_Nothing.NOTHING, *, producer='', deleted=None)
\n

Bases: JobFacet

\n
\n
Parameters:
\n
    \n
  • owners (list[Owner] | None)

  • \n
  • producer (str)

  • \n
  • deleted (bool | None)

  • \n
\n
\n
\n
\n
\nowners: list[Owner] | None
\n

The owners of the job.

\n
\n
\n
\n
\n

openlineage.client.generated.parent_run module

\n
\n
\nclass openlineage.client.generated.parent_run.Job(namespace, name)
\n

Bases: RedactMixin

\n
\n
Parameters:
\n
    \n
  • namespace (str)

  • \n
  • name (str)

  • \n
\n
\n
\n
\n
\nnamespace: str
\n

The namespace containing that job

\n
\n
\n
\nname: str
\n

The unique name for that job within that namespace

\n
\n
\n
\n
\nclass openlineage.client.generated.parent_run.ParentRunFacet(run, job, *, producer='')
\n

Bases: RunFacet

\n

the id of the parent run and job, iff this run was spawn from an other run (for example, the Dag run\nscheduling its tasks)

\n
\n
Parameters:
\n
    \n
  • run (Run)

  • \n
  • job (Job)

  • \n
  • producer (str)

  • \n
\n
\n
\n
\n
\nrun: Run
\n
\n
\n
\njob: Job
\n
\n
\n
\nclassmethod create(runId, namespace, name)
\n
\n
Parameters:
\n
    \n
  • runId (str)

  • \n
  • namespace (str)

  • \n
  • name (str)

  • \n
\n
\n
Return type:
\n

ParentRunFacet

\n
\n
\n
\n
\n
\n
\nclass openlineage.client.generated.parent_run.Run(runId)
\n

Bases: RedactMixin

\n
\n
Parameters:
\n

runId (str)

\n
\n
\n
\n
\nrunId: str
\n

The globally unique ID of the run associated with the job.

\n
\n
\n
\nrunid_check(attribute, value)
\n
\n
Parameters:
\n
    \n
  • attribute (str)

  • \n
  • value (str)

  • \n
\n
\n
Return type:
\n

None

\n
\n
\n
\n
\n
\n
\n

openlineage.client.generated.processing_engine_run module

\n
\n
\nclass openlineage.client.generated.processing_engine_run.ProcessingEngineRunFacet(version, name=None, openlineageAdapterVersion=None, *, producer='')
\n

Bases: RunFacet

\n
\n
Parameters:
\n
    \n
  • version (str)

  • \n
  • name (str | None)

  • \n
  • openlineageAdapterVersion (str | None)

  • \n
  • producer (str)

  • \n
\n
\n
\n
\n
\nversion: str
\n

Processing engine version. Might be Airflow or Spark version.

\n
\n
\n
\nname: str | None
\n

Processing engine name, e.g. Airflow or Spark

\n
\n
\n
\nopenlineageAdapterVersion: str | None
\n

OpenLineage adapter package version. Might be e.g. OpenLineage Airflow integration package version

\n
\n
\n
\n
\n

openlineage.client.generated.schema_dataset module

\n
\n
\nclass openlineage.client.generated.schema_dataset.SchemaDatasetFacet(fields=_Nothing.NOTHING, *, producer='', deleted=None)
\n

Bases: DatasetFacet

\n
\n
Parameters:
\n
    \n
  • fields (list[SchemaDatasetFacetFields] | None)

  • \n
  • producer (str)

  • \n
  • deleted (bool | None)

  • \n
\n
\n
\n
\n
\nfields: list[SchemaDatasetFacetFields] | None
\n

The fields of the data source.

\n
\n
\n
\n
\nclass openlineage.client.generated.schema_dataset.SchemaDatasetFacetFields(name, type=None, description=None, fields=_Nothing.NOTHING)
\n

Bases: RedactMixin

\n
\n
Parameters:
\n
    \n
  • name (str)

  • \n
  • type (str | None)

  • \n
  • description (str | None)

  • \n
  • fields (list[SchemaDatasetFacetFields] | None)

  • \n
\n
\n
\n
\n
\nname: str
\n

The name of the field.

\n
\n
\n
\ntype: str | None
\n

The type of the field.

\n
\n
\n
\ndescription: str | None
\n

The description of the field.

\n
\n
\n
\nfields: list[SchemaDatasetFacetFields] | None
\n

Nested struct fields.

\n
\n
\n
\n
\n

openlineage.client.generated.source_code_job module

\n
\n
\nclass openlineage.client.generated.source_code_job.SourceCodeJobFacet(language, sourceCode, *, producer='', deleted=None)
\n

Bases: JobFacet

\n
\n
Parameters:
\n
    \n
  • language (str)

  • \n
  • sourceCode (str)

  • \n
  • producer (str)

  • \n
  • deleted (bool | None)

  • \n
\n
\n
\n
\n
\nlanguage: str
\n

Language in which source code of this job was written.

\n
\n
\n
\nsourceCode: str
\n

Source code of this job.

\n
\n
\n
\n
\n

openlineage.client.generated.source_code_location_job module

\n
\n
\nclass openlineage.client.generated.source_code_location_job.SourceCodeLocationJobFacet(type, url, repoUrl=None, path=None, version=None, tag=None, branch=None, *, producer='', deleted=None)
\n

Bases: JobFacet

\n
\n
Parameters:
\n
    \n
  • type (str)

  • \n
  • url (str)

  • \n
  • repoUrl (str | None)

  • \n
  • path (str | None)

  • \n
  • version (str | None)

  • \n
  • tag (str | None)

  • \n
  • branch (str | None)

  • \n
  • producer (str)

  • \n
  • deleted (bool | None)

  • \n
\n
\n
\n
\n
\ntype: str
\n

the source control system

\n
\n
\n
\nurl: str
\n

the full http URL to locate the file

\n
\n
\n
\nrepoUrl: str | None
\n

the URL to the repository

\n
\n
\n
\npath: str | None
\n

the path in the repo containing the source files

\n
\n
\n
\nversion: str | None
\n

the current version deployed (not a branch name, the actual unique version)

\n
\n
\n
\ntag: str | None
\n

optional tag name

\n
\n
\n
\nbranch: str | None
\n

optional branch name

\n
\n
\n
\nurl_check(attribute, value)
\n
\n
Parameters:
\n
    \n
  • attribute (str)

  • \n
  • value (str)

  • \n
\n
\n
Return type:
\n

None

\n
\n
\n
\n
\n
\n
\n

openlineage.client.generated.sql_job module

\n
\n
\nclass openlineage.client.generated.sql_job.SQLJobFacet(query, *, producer='', deleted=None)
\n

Bases: JobFacet

\n
\n
Parameters:
\n
    \n
  • query (str)

  • \n
  • producer (str)

  • \n
  • deleted (bool | None)

  • \n
\n
\n
\n
\n
\nquery: str
\n
\n
\n
\n
\n

openlineage.client.generated.storage_dataset module

\n
\n
\nclass openlineage.client.generated.storage_dataset.StorageDatasetFacet(storageLayer, fileFormat=None, *, producer='', deleted=None)
\n

Bases: DatasetFacet

\n
\n
Parameters:
\n
    \n
  • storageLayer (str)

  • \n
  • fileFormat (str | None)

  • \n
  • producer (str)

  • \n
  • deleted (bool | None)

  • \n
\n
\n
\n
\n
\nstorageLayer: str
\n

iceberg, delta.

\n
\n
Type:
\n

Storage layer provider with allowed values

\n
\n
\n
\n
\n
\nfileFormat: str | None
\n

parquet, orc, avro, json, csv, text, xml.

\n
\n
Type:
\n

File format with allowed values

\n
\n
\n
\n
\n
\n\n
\n

openlineage.client.transport.composite module

\n
\n
\nclass openlineage.client.transport.composite.CompositeConfig(transports, continue_on_failure=True)
\n

Bases: Config

\n

CompositeConfig is a configuration class for CompositeTransport.

\n
\n
Parameters:
\n
    \n
  • transports (list[dict[str, Any]] | dict[str, dict[str, Any]])

  • \n
  • continue_on_failure (bool)

  • \n
\n
\n
\n
\n
\ntransports
\n

A list of dictionaries, where each dictionary represents the configuration\nfor a child transport. Each dictionary should contain the necessary parameters\nto initialize a specific transport instance.

\n
\n
\n
\ncontinue_on_failure
\n

If set to True, the CompositeTransport will attempt to emit the event using\nall configured transports, regardless of whether any previous transport\nin the list failed to emit the event. If set to False, an error in one\ntransport will halt the emission process for subsequent transports.

\n
\n
\n
\ntransports: list[dict[str, Any]] | dict[str, dict[str, Any]]
\n
\n
\n
\ncontinue_on_failure: bool
\n
\n
\n
\nclassmethod from_dict(params)
\n

Create a CompositeConfig object from a dictionary.

\n
\n
Parameters:
\n

params (dict[str, Any])

\n
\n
Return type:
\n

CompositeConfig

\n
\n
\n
\n
\n
\n
\nclass openlineage.client.transport.composite.CompositeTransport(config)
\n

Bases: Transport

\n

CompositeTransport is a transport class that emits events using multiple transports.

\n
\n
Parameters:
\n

config (CompositeConfig)

\n
\n
\n
\n
\nkind: str | None = 'composite'
\n
\n
\n
\nconfig_class
\n

alias of CompositeConfig

\n
\n
\n
\nproperty transports: list[Transport]
\n

Create and return a list of transports based on the config.

\n
\n
\n
\nemit(event)
\n

Emit an event using all transports in the config.

\n
\n
Parameters:
\n

event (Event)

\n
\n
Return type:
\n

None

\n
\n
\n
\n
\n
\n
\n

openlineage.client.transport.console module

\n
\n
\nclass openlineage.client.transport.console.ConsoleConfig
\n

Bases: Config

\n
\n
\n
\n
\n
\nclass openlineage.client.transport.console.ConsoleTransport(config)
\n

Bases: Transport

\n
\n
Parameters:
\n

config (ConsoleConfig)

\n
\n
\n
\n
\nkind: str | None = 'console'
\n
\n
\n
\nconfig_class
\n

alias of ConsoleConfig

\n
\n
\n
\nemit(event)
\n
\n
Parameters:
\n

event (Union[RunEvent, DatasetEvent, JobEvent, RunEvent, DatasetEvent, JobEvent])

\n
\n
Return type:
\n

None

\n
\n
\n
\n
\n
\n
\n

openlineage.client.transport.factory module

\n
\n
\nclass openlineage.client.transport.factory.DefaultTransportFactory
\n

Bases: TransportFactory

\n
\n
\n
\n
\nregister_transport(of_type, clazz)
\n
\n
Parameters:
\n
    \n
  • of_type (str)

  • \n
  • clazz (type[Transport] | str)

  • \n
\n
\n
Return type:
\n

None

\n
\n
\n
\n
\n
\ncreate(config=None)
\n

Initializes and returns a transport mechanism based on the provided configuration.

\n

If \u2018OPENLINEAGE_DISABLED\u2019 is set to \u2018true\u2019, a NoopTransport instance is returned,\neffectively disabling transport.\nIf a configuration dictionary is provided, transport specified by the config is initialized.\nIf no configuration is provided, the function defaults to a console-based transport, logging\na warning and printing events to the console.

\n
\n
Parameters:
\n

config (dict[str, str] | None)

\n
\n
Return type:
\n

Transport

\n
\n
\n
\n
\n
\n
\n

openlineage.client.transport.file module

\n
\n
\nclass openlineage.client.transport.file.FileConfig(log_file_path, append=False)
\n

Bases: Config

\n
\n
Parameters:
\n
    \n
  • log_file_path (str)

  • \n
  • append (bool)

  • \n
\n
\n
\n
\n
\nlog_file_path: str
\n
\n
\n
\nappend: bool = False
\n
\n
\n
\nclassmethod from_dict(params)
\n
\n
Parameters:
\n

params (dict[str, Any])

\n
\n
Return type:
\n

FileConfig

\n
\n
\n
\n
\n
\n
\nclass openlineage.client.transport.file.FileTransport(config)
\n

Bases: Transport

\n
\n
Parameters:
\n

config (FileConfig)

\n
\n
\n
\n
\nkind: str | None = 'file'
\n
\n
\n
\nconfig_class
\n

alias of FileConfig

\n
\n
\n
\nemit(event)
\n
\n
Parameters:
\n

event (Union[RunEvent, DatasetEvent, JobEvent, RunEvent, DatasetEvent, JobEvent])

\n
\n
Return type:
\n

None

\n
\n
\n
\n
\n
\n
\n

openlineage.client.transport.http module

\n
\n
\nclass openlineage.client.transport.http.TokenProvider(config)
\n

Bases: object

\n
\n
Parameters:
\n

config (dict[str, str])

\n
\n
\n
\n
\nget_bearer()
\n
\n
Return type:
\n

str | None

\n
\n
\n
\n
\n
\n
\nclass openlineage.client.transport.http.HttpCompression(value)
\n

Bases: Enum

\n

An enumeration.

\n
\n
\nGZIP = 'gzip'
\n
\n
\n
\n
\nclass openlineage.client.transport.http.ApiKeyTokenProvider(config)
\n

Bases: TokenProvider

\n
\n
Parameters:
\n

config (dict[str, str])

\n
\n
\n
\n
\nget_bearer()
\n
\n
Return type:
\n

str | None

\n
\n
\n
\n
\n
\n
\nopenlineage.client.transport.http.create_token_provider(auth)
\n
\n
Parameters:
\n

auth (dict[str, str])

\n
\n
Return type:
\n

TokenProvider

\n
\n
\n
\n
\n
\nopenlineage.client.transport.http.get_session()
\n
\n
Return type:
\n

Session

\n
\n
\n
\n
\n
\nclass openlineage.client.transport.http.HttpConfig(url, endpoint='api/v1/lineage', timeout=5.0, verify=True, auth=_Nothing.NOTHING, compression=None, session=None, adapter=None, custom_headers=_Nothing.NOTHING)
\n

Bases: Config

\n
\n
Parameters:
\n
    \n
  • url (str)

  • \n
  • endpoint (str)

  • \n
  • timeout (float)

  • \n
  • verify (bool)

  • \n
  • auth (TokenProvider)

  • \n
  • compression (HttpCompression | None)

  • \n
  • session (Session | None)

  • \n
  • adapter (HTTPAdapter | None)

  • \n
  • custom_headers (dict[str, str])

  • \n
\n
\n
\n
\n
\nurl: str
\n
\n
\n
\nendpoint: str
\n
\n
\n
\ntimeout: float
\n
\n
\n
\nverify: bool
\n
\n
\n
\nauth: TokenProvider
\n
\n
\n
\ncompression: HttpCompression | None
\n
\n
\n
\nsession: Session | None
\n
\n
\n
\nadapter: HTTPAdapter | None
\n
\n
\n
\ncustom_headers: dict[str, str]
\n
\n
\n
\nclassmethod from_dict(params)
\n
\n
Parameters:
\n

params (dict[str, Any])

\n
\n
Return type:
\n

HttpConfig

\n
\n
\n
\n
\n
\nclassmethod from_options(url, options, session)
\n
\n
Parameters:
\n
    \n
  • url (str)

  • \n
  • options (OpenLineageClientOptions)

  • \n
  • session (Session | None)

  • \n
\n
\n
Return type:
\n

HttpConfig

\n
\n
\n
\n
\n
\n
\nclass openlineage.client.transport.http.HttpTransport(config)
\n

Bases: Transport

\n
\n
Parameters:
\n

config (HttpConfig)

\n
\n
\n
\n
\nkind: str | None = 'http'
\n
\n
\n
\nconfig_class
\n

alias of HttpConfig

\n
\n
\n
\nset_adapter(adapter)
\n
\n
Parameters:
\n

adapter (HTTPAdapter)

\n
\n
Return type:
\n

None

\n
\n
\n
\n
\n
\nemit(event)
\n
\n
Parameters:
\n

event (Union[RunEvent, DatasetEvent, JobEvent, RunEvent, DatasetEvent, JobEvent])

\n
\n
Return type:
\n

Response

\n
\n
\n
\n
\n
\n
\n

openlineage.client.transport.kafka module

\n
\n
\nclass openlineage.client.transport.kafka.KafkaConfig(config, topic, messageKey=None, flush=True)
\n

Bases: Config

\n
\n
Parameters:
\n
    \n
  • config (dict[str, str])

  • \n
  • topic (str)

  • \n
  • messageKey (str | None)

  • \n
  • flush (bool)

  • \n
\n
\n
\n
\n
\nconfig: dict[str, str]
\n
\n
\n
\ntopic: str
\n
\n
\n
\nmessageKey: str | None
\n
\n
\n
\nflush: bool
\n
\n
\n
\nclassmethod from_dict(params)
\n
\n
Parameters:
\n

params (dict[str, Any])

\n
\n
Return type:
\n

_T

\n
\n
\n
\n
\n
\n
\nopenlineage.client.transport.kafka.on_delivery(err, msg)
\n
\n
Parameters:
\n
    \n
  • err (KafkaError)

  • \n
  • msg (Message)

  • \n
\n
\n
Return type:
\n

None

\n
\n
\n
\n
\n
\nclass openlineage.client.transport.kafka.KafkaTransport(config)
\n

Bases: Transport

\n
\n
Parameters:
\n

config (KafkaConfig)

\n
\n
\n
\n
\nkind: str | None = 'kafka'
\n
\n
\n
\nconfig_class
\n

alias of KafkaConfig

\n
\n
\n
\nemit(event)
\n
\n
Parameters:
\n

event (Event)

\n
\n
Return type:
\n

None

\n
\n
\n
\n
\n
\n
\n

openlineage.client.transport.msk_iam module

\n
\n
\nclass openlineage.client.transport.msk_iam.MSKIAMConfig(config, topic, messageKey=None, flush=True, region=None, aws_profile=None, role_arn=None, aws_debug_creds=False)
\n

Bases: KafkaConfig

\n
\n
Parameters:
\n
    \n
  • config (dict[str, str])

  • \n
  • topic (str)

  • \n
  • messageKey (str | None)

  • \n
  • flush (bool)

  • \n
  • region (str)

  • \n
  • aws_profile (None | str)

  • \n
  • role_arn (None | str)

  • \n
  • aws_debug_creds (bool)

  • \n
\n
\n
\n
\n
\nregion: str
\n
\n
\n
\naws_profile: None | str
\n
\n
\n
\nrole_arn: None | str
\n
\n
\n
\naws_debug_creds: bool
\n
\n
\n
\n
\nclass openlineage.client.transport.msk_iam.MSKIAMTransport(config)
\n

Bases: KafkaTransport

\n
\n
Parameters:
\n

config (MSKIAMConfig)

\n
\n
\n
\n
\nkind: str | None = 'msk-iam'
\n
\n
\n
\nconfig_class
\n

alias of MSKIAMConfig

\n
\n
\n
\n
\n

openlineage.client.transport.noop module

\n
\n
\nclass openlineage.client.transport.noop.NoopConfig
\n

Bases: Config

\n
\n
\n
\n
\n
\nclass openlineage.client.transport.noop.NoopTransport(config)
\n

Bases: Transport

\n
\n
Parameters:
\n

config (NoopConfig)

\n
\n
\n
\n
\nkind: str | None = 'noop'
\n
\n
\n
\nconfig_class
\n

alias of NoopConfig

\n
\n
\n
\nemit(event)
\n
\n
Parameters:
\n

event (Union[RunEvent, DatasetEvent, JobEvent, RunEvent, DatasetEvent, JobEvent])

\n
\n
Return type:
\n

None

\n
\n
\n
\n
\n
\n
\n

openlineage.client.transport.transport module

\n

To implement custom Transport implement Config and Transport classes.

\n
\n
Transport needs to
    \n
  • specify class variable config that will point to Config class that Transport requires

  • \n
  • __init__ that will accept specified Config class instance

  • \n
  • implement emit method that will accept RunEvent

  • \n
\n
\n
\n

Config file is read and parameters there are passed to from_dict classmethod.\nThe config class can have more complex attributes, but needs to be able to\ninstantiate them in from_dict method.

\n

DefaultTransportFactory instantiates custom transports by looking at type field in\nclass config.

\n
\n
\nclass openlineage.client.transport.transport.Config
\n

Bases: object

\n
\n
\n
\n
\nclassmethod from_dict(params)
\n
\n
Parameters:
\n

params (dict[str, Any])

\n
\n
Return type:
\n

_T

\n
\n
\n
\n
\n
\n
\nclass openlineage.client.transport.transport.Transport
\n

Bases: object

\n
\n
\nkind: str | None = None
\n
\n
\n
\nname: str | None = None
\n
\n
\n
\nconfig_class
\n

alias of Config

\n
\n
\n
\nemit(event)
\n
\n
Parameters:
\n

event (Event)

\n
\n
Return type:
\n

Any

\n
\n
\n
\n
\n
\n
\nclass openlineage.client.transport.transport.TransportFactory
\n

Bases: object

\n
\n
\ncreate(config=None)
\n
\n
Parameters:
\n

config (dict[str, str] | None)

\n
\n
Return type:
\n

Transport

\n
\n
\n
\n
\n
\n
\n
"}}> + diff --git a/versioned_docs/version-1.24.1/development/developing/python/setup.md b/versioned_docs/version-1.24.1/development/developing/python/setup.md new file mode 100644 index 0000000..5201ab1 --- /dev/null +++ b/versioned_docs/version-1.24.1/development/developing/python/setup.md @@ -0,0 +1,41 @@ +--- +title: Setup a development environment +sidebar_position: 1 +--- + +There are four Python OpenLineage packages that you can install locally when setting up a development environment.
+Two of them: [openlineage-integration-common](https://pypi.org/project/openlineage-integration-common/) and [openlineage-airflow](https://pypi.org/project/openlineage-airflow/) have dependency on [openlineage-python](https://pypi.org/project/openlineage-python/) client and [openlineage-sql](https://pypi.org/project/openlineage-sql/). + +Typically, you first need to build `openlineage-sql` locally (see [README](https://github.com/OpenLineage/OpenLineage/blob/main/integration/sql/README.md)). After each release you have to repeat this step in order to bump local version of the package. + +To install Openlineage Common, Python Client & Dagster integration you need to run pip install command with a link to local directory: + +```bash +$ python -m pip install -e .[dev] +``` +In zsh: +```bash +$ python -m pip install -e .\[dev\] +``` + +To make Airflow integration setup easier you can use run following command in package directory: +```bash +$ pip install -r dev-requirements.txt +``` +This should install all needed integrations locally. + +### Docker Compose development environment +There is also possibility to create local Docker-based development environment that has OpenLineage libraries setup along with Airflow and some helpful services. +To do that you should run `run-dev-airflow.sh` script located [here](https://github.com/OpenLineage/OpenLineage/blob/main/integration/airflow/scripts/run-dev-airflow.sh). + +The script uses the same Docker Compose files as [integration tests](./tests/airflow.md#integration-tests). Two main differences are: +* it runs in non-blocking way +* it mounts OpenLineage Python packages as editable and mounted to Airflow containers. This allows to change code and test it live without need to rebuild whole environment. + + +When using above script, you can add the `-i` flag or `--attach-integration` flag. +This can be helpful when you need to run arbitrary integration tests during development. For example, the following command run in the integration container... +```bash +python -m pytest test_integration.py::test_integration[great_expectations_validation-requests/great_expectations.json] +``` +...runs a single test which you can repeat after changes in code. \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/development/developing/python/tests/_category_.json b/versioned_docs/version-1.24.1/development/developing/python/tests/_category_.json new file mode 100644 index 0000000..3ac452b --- /dev/null +++ b/versioned_docs/version-1.24.1/development/developing/python/tests/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Tests", + "position": 2 +} diff --git a/versioned_docs/version-1.24.1/development/developing/python/tests/airflow.md b/versioned_docs/version-1.24.1/development/developing/python/tests/airflow.md new file mode 100644 index 0000000..c1f37ef --- /dev/null +++ b/versioned_docs/version-1.24.1/development/developing/python/tests/airflow.md @@ -0,0 +1,180 @@ +--- +title: Airflow +sidebar_position: 2 +--- + +OpenLineage provides an integration with Apache Airflow. As Airflow is actively developed and major changes happen quite often it is advised to test OpenLineage integration against multiple Airflow versions. In the current CI process OpenLineage is tested against following versions: +* 2.1.4 (2.0+ upgrade) +* 2.2.4 +* 2.3.4 (TaskListener API introduced) +* 2.4.3 +* 2.5.2 +* 2.6.1 + +### Unit tests +In order to make running unit tests against multiple Airflow versions easier there is possibility to use [tox](https://tox.wiki/). +To run unit tests against all configured Airflow versions just run: +``` +tox +``` +You can also list existing environments with: +``` +tox -l +``` +that should list: +``` +py3-airflow-2.1.4 +py3-airflow-2.2.4 +py3-airflow-2.3.4 +py3-airflow-2.4.3 +py3-airflow.2.5.0 +``` +Then you can run tests in chosen environment, e.g.: +``` +tox -e py3-airflow-2.3.4 +``` +`setup.cfg` contains tox-related configuration. By default `tox` command runs: +1. `flake8` linting +2. `pytest` command + +Additionally, outside of `tox` you should run `mypy` static code analysis. You can do that with: +``` +python -m mypy openlineage +``` + +### Integration tests +Integration tests are located in `tests/integration/tests` directory. They require running Docker containers to provision local test environment: Airflow components (worker, scheduler), databases (PostgreSQL, MySQL) and OpenLineage events consumer. + +#### How to run +Integration tests require usage of _docker compose_. There are scripts prepared to make build images and run tests easier. + +```bash +AIRFLOW_IMAGE= ./tests/integration/docker/up.sh +``` +e.g. +```bash +AIRFLOW_IMAGE=apache/airflow:2.3.4-python3.7 ./tests/integration/docker/up.sh +``` +#### What tests are ran +The actual setup is to run all defined Airflow DAGs, collect OpenLineage events and check if they meet requirements. +The test you should pay most attention to is `test_integration`. It compares produced events to expected JSON structures recursively, with a respect if fields are not missing. + +Some of the tests are skipped if database connection specific environment variables are not set. The example is set of `SNOWFLAKE_PASSWORD` and `SNOWFLAKE_ACCOUNT_ID` variables. + +#### View stored OpenLineage events +OpenLineage events produced from Airflow runs are stored locally in `./tests/integration/tests/events` directory. The files are not overwritten, rather new events are appended to existing files. + +#### Example how to add new integration test +Let's take following `CustomOperator` for which we should add `CustomExtractor` and test it. First we create DAG in integration tests DAGs folder: [airflow/tests/integration/tests/airflow/dags](https://github.com/OpenLineage/OpenLineage/tree/main/integration/airflow/tests/integration/tests/airflow/dags). + +```python +from airflow.models import BaseOperator +from airflow.utils.dates import days_ago +from airflow import DAG + + +default_args = { + 'depends_on_past': False, + 'start_date': days_ago(7) +} + + +dag = DAG( + 'custom_extractor', + schedule_interval='@once', + default_args=default_args +) + +class CustomOperator(BaseOperator): + def execute(self, context: Any): + for i in range(10): + print(i) + +t1 = CustomOperator( + task_id='custom_extractor', + dag=dag +) +``` +In the same folder we create `custom_extractor.py`: +```python +from typing import Union, Optional, List + +from openlineage.client.run import Dataset +from openlineage.airflow.extractors import TaskMetadata +from openlineage.airflow.extractors.base import BaseExtractor + + +class CustomExtractor(BaseExtractor): + @classmethod + def get_operator_classnames(cls) -> List[str]: + return ['CustomOperator'] + + def extract(self) -> Union[Optional[TaskMetadata], List[TaskMetadata]]: + return TaskMetadata( + "test", + inputs=[ + Dataset( + namespace="test", + name="dataset", + facets={} + ) + ] + ) +``` +Typically we want to compare produced metadata against expected. In order to do that we create JSON file `custom_extractor.json` in [airflow/tests/integration/requests](https://github.com/OpenLineage/OpenLineage/tree/main/integration/airflow/tests/integration/requests): +``` + [{ + "eventType": "START", + "inputs": [{ + "facets": {}, + "name": "dataset", + "namespace": "test" + }], + "job": { + "facets": { + "documentation": { + "description": "Test dag." + } + }, + "name": "custom_extractor.custom_extractor", + "namespace": "food_delivery" + }, + "run": { + "facets": { + "airflow_runArgs": { + "externalTrigger": false + }, + "parent": { + "job": { + "name": "custom_extractor", + "namespace": "food_delivery" + } + } + } + } + }, + { + "eventType": "COMPLETE", + "inputs": [{ + "facets": {}, + "name": "dataset", + "namespace": "test" + }], + "job": { + "facets": {}, + "name": "custom_extractor.custom_extractor", + "namespace": "food_delivery" + } + } + ] + ``` + and add parameter for `test_integration` in [airflow/tests/integration/test_integration.py](https://github.com/OpenLineage/OpenLineage/blob/main/integration/airflow/tests/integration/test_integration.py): +``` +("source_code_dag", "requests/source_code.json"), ++ ("custom_extractor", "requests/custom_extractor.json"), +("unknown_operator_dag", "requests/unknown_operator.json"), +``` + +That should setup a check for existence of both `START` and `COMPLETE` events, custom input facet and correct job facet. + +Full example can be found in source code available in integration tests [directory](https://github.com/OpenLineage/OpenLineage/blob/main/integration/airflow/tests/integration/). \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/development/developing/python/tests/client.md b/versioned_docs/version-1.24.1/development/developing/python/tests/client.md new file mode 100644 index 0000000..d8a286b --- /dev/null +++ b/versioned_docs/version-1.24.1/development/developing/python/tests/client.md @@ -0,0 +1,10 @@ +--- +title: Client +sidebar_position: 1 +--- + +:::info +This page needs your contribution! Please contribute new examples using the edit link at the bottom. +::: + +There are unit tests available for OpenLineage Python client. You can run them with a simple `pytest` command with directory set to client base path. \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/development/developing/python/tests/common.md b/versioned_docs/version-1.24.1/development/developing/python/tests/common.md new file mode 100644 index 0000000..2e3b585 --- /dev/null +++ b/versioned_docs/version-1.24.1/development/developing/python/tests/common.md @@ -0,0 +1,10 @@ +--- +title: Common +sidebar_position: 3 +--- + +:::info +This page needs your contribution! Please contribute new examples using the edit link at the bottom. +::: + +There are unit tests available for OpenLineage [common package](../../developing.md#common-library-python). You can run them with a simple `pytest` command with directory set to package base path. \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/development/developing/python/tests/dagster.md b/versioned_docs/version-1.24.1/development/developing/python/tests/dagster.md new file mode 100644 index 0000000..5e2a241 --- /dev/null +++ b/versioned_docs/version-1.24.1/development/developing/python/tests/dagster.md @@ -0,0 +1,10 @@ +--- +title: Dagster +sidebar_position: 4 +--- + +:::info +This page needs your contribution! Please contribute new examples using the edit link at the bottom. +::: + +There are unit tests available for Dagster integration. You can run them with a simple `pytest` command with directory set to integration base path. diff --git a/versioned_docs/version-1.24.1/development/developing/python/troubleshooting/_category_.json b/versioned_docs/version-1.24.1/development/developing/python/troubleshooting/_category_.json new file mode 100644 index 0000000..6aba13b --- /dev/null +++ b/versioned_docs/version-1.24.1/development/developing/python/troubleshooting/_category_.json @@ -0,0 +1,5 @@ +{ + "label": "Troubleshooting", + "position": 3 +} + \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/development/developing/python/troubleshooting/logging.md b/versioned_docs/version-1.24.1/development/developing/python/troubleshooting/logging.md new file mode 100644 index 0000000..f4e2ac4 --- /dev/null +++ b/versioned_docs/version-1.24.1/development/developing/python/troubleshooting/logging.md @@ -0,0 +1,290 @@ +--- +title: Logging +sidebar_position: 1 +--- + +OpenLineage uses python's [logging facility](https://docs.python.org/3/library/logging.html) when generating logs. Being able to emit logs for various purposes is very helpful when troubleshooting OpenLineage. + +Consider the following sample python script that emits OpenLineage events: + +```python +#!/usr/bin/env python3 +from openlineage.client.run import ( + RunEvent, + RunState, + Run, + Job, + Dataset, + OutputDataset, + InputDataset, +) +from openlineage.client.client import OpenLineageClient, OpenLineageClientOptions +from openlineage.client.facet import ( + SqlJobFacet, + SchemaDatasetFacet, + SchemaField, + OutputStatisticsOutputDatasetFacet, + SourceCodeLocationJobFacet, + NominalTimeRunFacet, + DataQualityMetricsInputDatasetFacet, + ColumnMetric, +) +from openlineage.client.uuid import generate_new_uuid +from datetime import datetime, timezone, timedelta +import time +from random import random + +PRODUCER = f"https://github.com/openlineage-user" +namespace = "python_client" + +url = "http://localhost:5000" +api_key = "1234567890ckcu028rzu5l" + +client = OpenLineageClient( + url=url, + # optional api key in case the backend requires it + options=OpenLineageClientOptions(api_key=api_key), +) + +# generates job facet +def job(job_name, sql, location): + facets = {"sql": SqlJobFacet(sql)} + if location != None: + facets.update( + {"sourceCodeLocation": SourceCodeLocationJobFacet("git", location)} + ) + return Job(namespace=namespace, name=job_name, facets=facets) + + +# geneartes run racet +def run(run_id, hour): + return Run( + runId=run_id, + facets={ + "nominalTime": NominalTimeRunFacet( + nominalStartTime=f"2022-04-14T{twoDigits(hour)}:12:00Z" + ) + }, + ) + + +# generates dataset +def dataset(name, schema=None, ns=namespace): + if schema == None: + facets = {} + else: + facets = {"schema": schema} + return Dataset(namespace, name, facets) + + +# generates output dataset +def outputDataset(dataset, stats): + output_facets = {"stats": stats, "outputStatistics": stats} + return OutputDataset(dataset.namespace, dataset.name, dataset.facets, output_facets) + + +# generates input dataset +def inputDataset(dataset, dq): + input_facets = { + "dataQuality": dq, + } + return InputDataset(dataset.namespace, dataset.name, dataset.facets, input_facets) + + +def twoDigits(n): + if n < 10: + result = f"0{n}" + elif n < 100: + result = f"{n}" + else: + raise f"error: {n}" + return result + + +now = datetime.now(timezone.utc) + + +# generates run Event +def runEvents(job_name, sql, inputs, outputs, hour, min, location, duration): + run_id = str(generate_new_uuid()) + myjob = job(job_name, sql, location) + myrun = run(run_id, hour) + started_at = now + timedelta(hours=hour, minutes=min, seconds=20 + round(random() * 10)) + ended_at = started_at + timedelta(minutes=duration, seconds=20 + round(random() * 10)) + return ( + RunEvent( + eventType=RunState.START, + eventTime=started_at.isoformat(), + run=myrun, + job=myjob, + producer=PRODUCER, + inputs=inputs, + outputs=outputs, + ), + RunEvent( + eventType=RunState.COMPLETE, + eventTime=ended_at.isoformat(), + run=myrun, + job=myjob, + producer=PRODUCER, + inputs=inputs, + outputs=outputs, + ), + ) + + +# add run event to the events list +def addRunEvents( + events, job_name, sql, inputs, outputs, hour, minutes, location=None, duration=2 +): + (start, complete) = runEvents( + job_name, sql, inputs, outputs, hour, minutes, location, duration + ) + events.append(start) + events.append(complete) + + +events = [] + +# create dataset data +for i in range(0, 5): + + user_counts = dataset("tmp_demo.user_counts") + user_history = dataset( + "temp_demo.user_history", + SchemaDatasetFacet( + fields=[ + SchemaField(name="id", type="BIGINT", description="the user id"), + SchemaField( + name="email_domain", type="VARCHAR", description="the user id" + ), + SchemaField(name="status", type="BIGINT", description="the user id"), + SchemaField( + name="created_at", + type="DATETIME", + description="date and time of creation of the user", + ), + SchemaField( + name="updated_at", + type="DATETIME", + description="the last time this row was updated", + ), + SchemaField( + name="fetch_time_utc", + type="DATETIME", + description="the time the data was fetched", + ), + SchemaField( + name="load_filename", + type="VARCHAR", + description="the original file this data was ingested from", + ), + SchemaField( + name="load_filerow", + type="INT", + description="the row number in the original file", + ), + SchemaField( + name="load_timestamp", + type="DATETIME", + description="the time the data was ingested", + ), + ] + ), + "snowflake://", + ) + + create_user_counts_sql = """CREATE OR REPLACE TABLE TMP_DEMO.USER_COUNTS AS ( + SELECT DATE_TRUNC(DAY, created_at) date, COUNT(id) as user_count + FROM TMP_DEMO.USER_HISTORY + GROUP BY date + )""" + + # location of the source code + location = "https://github.com/some/airflow/dags/example/user_trends.py" + + # run simulating Airflow DAG with snowflake operator + addRunEvents( + events, + "create_user_counts", + create_user_counts_sql, + [user_history], + [user_counts], + i, + 11, + location, + ) + + +for event in events: + from openlineage.client.serde import Serde + client.emit(event) + +``` + +When you use OpenLineage backend such as Marquez on your local environment, the script would emit OpenLienage events to it. + +```bash +python oltest.py +``` + +However, this short script does not produce any logging information, as the logging configuration is not setup. + +Add the following line to `oltest.py`, to configure the logging level as `DEBUG`. + +```python +... +import logging +... +logging.basicConfig(level=logging.DEBUG) +... +``` + +Re-running the `oltest.py` again will now produce the following outputs: + +``` +DEBUG:openlineage.client.transport.http:Constructing openlineage client to send events to http://localhost:5000 +DEBUG:openlineage.client.transport.http:Sending openlineage event {"eventTime": "2022-12-07T02:10:24.369600+00:00", "eventType": "START", "inputs": [{"facets": {"schema": {"_producer": "https://github.com/OpenLineage/OpenLineage/tree/0.18.0/client/python", "_schemaURL": "https://raw.githubusercontent.com/OpenLineage/OpenLineage/main/spec/OpenLineage.json#/definitions/SchemaDatasetFacet", "fields": [{"description": "the user id", "name": "id", "type": "BIGINT"}, {"description": "the user id", "name": "email_domain", "type": "VARCHAR"}, {"description": "the user id", "name": "status", "type": "BIGINT"}, {"description": "date and time of creation of the user", "name": "created_at", "type": "DATETIME"}, {"description": "the last time this row was updated", "name": "updated_at", "type": "DATETIME"}, {"description": "the time the data was fetched", "name": "fetch_time_utc", "type": "DATETIME"}, {"description": "the original file this data was ingested from", "name": "load_filename", "type": "VARCHAR"}, {"description": "the row number in the original file", "name": "load_filerow", "type": "INT"}, {"description": "the time the data was ingested", "name": "load_timestamp", "type": "DATETIME"}]}}, "name": "temp_demo.user_history", "namespace": "python_client"}], "job": {"facets": {"sourceCodeLocation": {"_producer": "https://github.com/OpenLineage/OpenLineage/tree/0.18.0/client/python", "_schemaURL": "https://raw.githubusercontent.com/OpenLineage/OpenLineage/main/spec/OpenLineage.json#/definitions/SourceCodeLocationJobFacet", "type": "git", "url": "https://github.com/some/airflow/dags/example/user_trends.py"}, "sql": {"_producer": "https://github.com/OpenLineage/OpenLineage/tree/0.18.0/client/python", "_schemaURL": "https://raw.githubusercontent.com/OpenLineage/OpenLineage/main/spec/OpenLineage.json#/definitions/SqlJobFacet", "query": "CREATE OR REPLACE TABLE TMP_DEMO.USER_COUNTS AS (\n\t\t\tSELECT DATE_TRUNC(DAY, created_at) date, COUNT(id) as user_count\n\t\t\tFROM TMP_DEMO.USER_HISTORY\n\t\t\tGROUP BY date\n\t\t\t)"}}, "name": "create_user_counts", "namespace": "python_client"}, "outputs": [{"facets": {}, "name": "tmp_demo.user_counts", "namespace": "python_client"}], "producer": "https://github.com/openlineage-user", "run": {"facets": {"nominalTime": {"_producer": "https://github.com/OpenLineage/OpenLineage/tree/0.18.0/client/python", "_schemaURL": "https://raw.githubusercontent.com/OpenLineage/OpenLineage/main/spec/OpenLineage.json#/definitions/NominalTimeRunFacet", "nominalStartTime": "2022-04-14T00:12:00Z"}}, "runId": "e74f805a-0fde-4480-84a3-6919011eb14d"}} +DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): localhost:5000 +DEBUG:urllib3.connectionpool:http://localhost:5000 "POST /api/v1/lineage HTTP/1.1" 201 0 +DEBUG:openlineage.client.transport.http:Sending openlineage event {"eventTime": "2022-12-07T02:12:47.369600+00:00", "eventType": "COMPLETE", "inputs": [{"facets": {"schema": {"_producer": "https://github.com/OpenLineage/OpenLineage/tree/0.18.0/client/python", "_schemaURL": "https://raw.githubusercontent.com/OpenLineage/OpenLineage/main/spec/OpenLineage.json#/definitions/SchemaDatasetFacet", "fields": [{"description": "the user id", "name": "id", "type": "BIGINT"}, {"description": "the user id", "name": "email_domain", "type": "VARCHAR"}, {"description": "the user id", "name": "status", "type": "BIGINT"}, {"description": "date and time of creation of the user", "name": "created_at", "type": "DATETIME"}, {"description": "the last time this row was updated", "name": "updated_at", "type": "DATETIME"}, {"description": "the time the data was fetched", "name": "fetch_time_utc", "type": "DATETIME"}, {"description": "the original file this data was ingested from", "name": "load_filename", "type": "VARCHAR"}, {"description": "the row number in the original file", "name": "load_filerow", "type": "INT"}, {"description": "the time the data was ingested", "name": "load_timestamp", "type": "DATETIME"}]}}, "name": "temp_demo.user_history", "namespace": "python_client"}], "job": {"facets": {"sourceCodeLocation": {"_producer": "https://github.com/OpenLineage/OpenLineage/tree/0.18.0/client/python", "_schemaURL": "https://raw.githubusercontent.com/OpenLineage/OpenLineage/main/spec/OpenLineage.json#/definitions/SourceCodeLocationJobFacet", "type": "git", "url": "https://github.com/some/airflow/dags/example/user_trends.py"}, "sql": {"_producer": "https://github.com/OpenLineage/OpenLineage/tree/0.18.0/client/python", "_schemaURL": "https://raw.githubusercontent.com/OpenLineage/OpenLineage/main/spec/OpenLineage.json#/definitions/SqlJobFacet", "query": "CREATE OR REPLACE TABLE TMP_DEMO.USER_COUNTS AS (\n\t\t\tSELECT DATE_TRUNC(DAY, created_at) date, COUNT(id) as user_count\n\t\t\tFROM TMP_DEMO.USER_HISTORY\n\t\t\tGROUP BY date\n\t\t\t)"}}, "name": "create_user_counts", "namespace": "python_client"}, "outputs": [{"facets": {}, "name": "tmp_demo.user_counts", "namespace": "python_client"}], "producer": "https://github.com/openlineage-user", "run": {"facets": {"nominalTime": {"_producer": "https://github.com/OpenLineage/OpenLineage/tree/0.18.0/client/python", "_schemaURL": "https://raw.githubusercontent.com/OpenLineage/OpenLineage/main/spec/OpenLineage.json#/definitions/NominalTimeRunFacet", "nominalStartTime": "2022-04-14T00:12:00Z"}}, "runId": "e74f805a-0fde-4480-84a3-6919011eb14d"}} +DEBUG:urllib3.connectionpool:http://localhost:5000 "POST /api/v1/lineage HTTP/1.1" 201 0 +DEBUG:openlineage.client.transport.http:Sending openlineage event {"eventTime": "2022-12-07T03:10:20.369600+00:00", "eventType": "START", "inputs": [{"facets": {"schema": {"_producer": "https://github.com/OpenLineage/OpenLineage/tree/0.18.0/client/python", "_schemaURL": "https://raw.githubusercontent.com/OpenLineage/OpenLineage/main/spec/OpenLineage.json#/definitions/SchemaDatasetFacet", "fields": [{"description": "the user id", "name": "id", "type": "BIGINT"}, {"description": "the user id", "name": "email_domain", "type": "VARCHAR"}, {"description": "the user id", "name": "status", "type": "BIGINT"}, {"description": "date and time of creation of the user", "name": "created_at", "type": "DATETIME"}, {"description": "the last time this row was updated", "name": "updated_at", "type": "DATETIME"}, {"description": "the time the data was fetched", "name": "fetch_time_utc", "type": "DATETIME"}, {"description": "the original file this data was ingested from", "name": "load_filename", "type": "VARCHAR"}, {"description": "the row number in the original file", "name": "load_filerow", "type": "INT"}, {"description": "the time the data was ingested", "name": "load_timestamp", "type": "DATETIME"}]}}, "name": "temp_demo.user_history", "namespace": "python_client"}], "job": {"facets": {"sourceCodeLocation": {"_producer": "https://github.com/OpenLineage/OpenLineage/tree/0.18.0/client/python", "_schemaURL": "https://raw.githubusercontent.com/OpenLineage/OpenLineage/main/spec/OpenLineage.json#/definitions/SourceCodeLocationJobFacet", "type": "git", "url": "https://github.com/some/airflow/dags/example/user_trends.py"}, "sql": {"_producer": "https://github.com/OpenLineage/OpenLineage/tree/0.18.0/client/python", "_schemaURL": "https://raw.githubusercontent.com/OpenLineage/OpenLineage/main/spec/OpenLineage.json#/definitions/SqlJobFacet", "query": "CREATE OR REPLACE TABLE TMP_DEMO.USER_COUNTS AS (\n\t\t\tSELECT DATE_TRUNC(DAY, created_at) date, COUNT(id) as user_count\n\t\t\tFROM TMP_DEMO.USER_HISTORY\n\t\t\tGROUP BY date\n\t\t\t)"}}, "name": "create_user_counts", "namespace": "python_client"}, "outputs": [{"facets": {}, "name": "tmp_demo.user_counts", "namespace": "python_client"}], "producer": "https://github.com/openlineage-user", "run": {"facets": {"nominalTime": {"_producer": "https://github.com/OpenLineage/OpenLineage/tree/0.18.0/client/python", "_schemaURL": "https://raw.githubusercontent.com/OpenLineage/OpenLineage/main/spec/OpenLineage.json#/definitions/NominalTimeRunFacet", "nominalStartTime": "2022-04-14T01:12:00Z"}}, "runId": "ff034dc3-e3e9-4e4b-bcf1-efba104ac4d4"}} +DEBUG:urllib3.connectionpool:http://localhost:5000 "POST /api/v1/lineage HTTP/1.1" 201 0 +DEBUG:openlineage.client.transport.http:Sending openlineage event {"eventTime": "2022-12-07T03:12:42.369600+00:00", "eventType": "COMPLETE", "inputs": [{"facets": {"schema": {"_producer": "https://github.com/OpenLineage/OpenLineage/tree/0.18.0/client/python", "_schemaURL": "https://raw.githubusercontent.com/OpenLineage/OpenLineage/main/spec/OpenLineage.json#/definitions/SchemaDatasetFacet", "fields": [{"description": "the user id", "name": "id", "type": "BIGINT"}, {"description": "the user id", "name": "email_domain", "type": "VARCHAR"}, {"description": "the user id", "name": "status", "type": "BIGINT"}, {"description": "date and time of creation of the user", "name": "created_at", "type": "DATETIME"}, {"description": "the last time this row was updated", "name": "updated_at", "type": "DATETIME"}, {"description": "the time the data was fetched", "name": "fetch_time_utc", "type": "DATETIME"}, {"description": "the original file this data was ingested from", "name": "load_filename", "type": "VARCHAR"}, {"description": "the row number in the original file", "name": "load_filerow", "type": "INT"}, {"description": "the time the data was ingested", "name": "load_timestamp", "type": "DATETIME"}]}}, "name": "temp_demo.user_history", "namespace": "python_client"}], "job": {"facets": {"sourceCodeLocation": {"_producer": "https://github.com/OpenLineage/OpenLineage/tree/0.18.0/client/python", "_schemaURL": "https://raw.githubusercontent.com/OpenLineage/OpenLineage/main/spec/OpenLineage.json#/definitions/SourceCodeLocationJobFacet", "type": "git", "url": "https://github.com/some/airflow/dags/example/user_trends.py"}, "sql": {"_producer": "https://github.com/OpenLineage/OpenLineage/tree/0.18.0/client/python", "_schemaURL": "https://raw.githubusercontent.com/OpenLineage/OpenLineage/main/spec/OpenLineage.json#/definitions/SqlJobFacet", "query": "CREATE OR REPLACE TABLE TMP_DEMO.USER_COUNTS AS (\n\t\t\tSELECT DATE_TRUNC(DAY, created_at) date, COUNT(id) as user_count\n\t\t\tFROM TMP_DEMO.USER_HISTORY\n\t\t\tGROUP BY date\n\t\t\t)"}}, "name": "create_user_counts", "namespace": "python_client"}, "outputs": [{"facets": {}, "name": "tmp_demo.user_counts", "namespace": "python_client"}], "producer": "https://github.com/openlineage-user", "run": {"facets": {"nominalTime": {"_producer": "https://github.com/OpenLineage/OpenLineage/tree/0.18.0/client/python", "_schemaURL": "https://raw.githubusercontent.com/OpenLineage/OpenLineage/main/spec/OpenLineage.json#/definitions/NominalTimeRunFacet", "nominalStartTime": "2022-04-14T01:12:00Z"}}, "runId": "ff034dc3-e3e9-4e4b-bcf1-efba104ac4d4"}} +DEBUG:urllib3.connectionpool:http://localhost:5000 "POST /api/v1/lineage HTTP/1.1" 201 0 +DEBUG:openlineage.client.transport.http:Sending openlineage event {"eventTime": "2022-12-07T04:10:22.369600+00:00", "eventType": "START", "inputs": [{"facets": {"schema": {"_producer": "https://github.com/OpenLineage/OpenLineage/tree/0.18.0/client/python", "_schemaURL": "https://raw.githubusercontent.com/OpenLineage/OpenLineage/main/spec/OpenLineage.json#/definitions/SchemaDatasetFacet", "fields": [{"description": "the user id", "name": "id", "type": "BIGINT"}, {"description": "the user id", "name": "email_domain", "type": "VARCHAR"}, {"description": "the user id", "name": "status", "type": "BIGINT"}, {"description": "date and time of creation of the user", "name": "created_at", "type": "DATETIME"}, {"description": "the last time this row was updated", "name": "updated_at", "type": "DATETIME"}, {"description": "the time the data was fetched", "name": "fetch_time_utc", "type": "DATETIME"}, {"description": "the original file this data was ingested from", "name": "load_filename", "type": "VARCHAR"}, {"description": "the row number in the original file", "name": "load_filerow", "type": "INT"}, {"description": "the time the data was ingested", "name": "load_timestamp", "type": "DATETIME"}]}}, "name": "temp_demo.user_history", "namespace": "python_client"}], "job": {"facets": {"sourceCodeLocation": {"_producer": "https://github.com/OpenLineage/OpenLineage/tree/0.18.0/client/python", "_schemaURL": "https://raw.githubusercontent.com/OpenLineage/OpenLineage/main/spec/OpenLineage.json#/definitions/SourceCodeLocationJobFacet", "type": "git", "url": "https://github.com/some/airflow/dags/example/user_trends.py"}, "sql": {"_producer": "https://github.com/OpenLineage/OpenLineage/tree/0.18.0/client/python", "_schemaURL": "https://raw.githubusercontent.com/OpenLineage/OpenLineage/main/spec/OpenLineage.json#/definitions/SqlJobFacet", "query": "CREATE OR REPLACE TABLE TMP_DEMO.USER_COUNTS AS (\n\t\t\tSELECT DATE_TRUNC(DAY, created_at) date, COUNT(id) as user_count\n\t\t\tFROM TMP_DEMO.USER_HISTORY\n\t\t\tGROUP BY date\n\t\t\t)"}}, "name": "create_user_counts", "namespace": "python_client"}, "outputs": [{"facets": {}, "name": "tmp_demo.user_counts", "namespace": "python_client"}], "producer": "https://github.com/openlineage-user", "run": {"facets": {"nominalTime": {"_producer": "https://github.com/OpenLineage/OpenLineage/tree/0.18.0/client/python", "_schemaURL": "https://raw.githubusercontent.com/OpenLineage/OpenLineage/main/spec/OpenLineage.json#/definitions/NominalTimeRunFacet", "nominalStartTime": "2022-04-14T02:12:00Z"}}, "runId": "b7304cdf-7c9e-4183-bd9d-1474cb86bad3"}} +DEBUG:urllib3.connectionpool:http://localhost:5000 "POST /api/v1/lineage HTTP/1.1" 201 0 +DEBUG:openlineage.client.transport.http:Sending openlineage event {"eventTime": "2022-12-07T04:12:45.369600+00:00", "eventType": "COMPLETE", "inputs": [{"facets": {"schema": {"_producer": "https://github.com/OpenLineage/OpenLineage/tree/0.18.0/client/python", "_schemaURL": "https://raw.githubusercontent.com/OpenLineage/OpenLineage/main/spec/OpenLineage.json#/definitions/SchemaDatasetFacet", "fields": [{"description": "the user id", "name": "id", "type": "BIGINT"}, {"description": "the user id", "name": "email_domain", "type": "VARCHAR"}, {"description": "the user id", "name": "status", "type": "BIGINT"}, {"description": "date and time of creation of the user", "name": "created_at", "type": "DATETIME"}, {"description": "the last time this row was updated", "name": "updated_at", "type": "DATETIME"}, {"description": "the time the data was fetched", "name": "fetch_time_utc", "type": "DATETIME"}, {"description": "the original file this data was ingested from", "name": "load_filename", "type": "VARCHAR"}, {"description": "the row number in the original file", "name": "load_filerow", "type": "INT"}, {"description": "the time the data was ingested", "name": "load_timestamp", "type": "DATETIME"}]}}, "name": "temp_demo.user_history", "namespace": "python_client"}], "job": {"facets": {"sourceCodeLocation": {"_producer": "https://github.com/OpenLineage/OpenLineage/tree/0.18.0/client/python", "_schemaURL": "https://raw.githubusercontent.com/OpenLineage/OpenLineage/main/spec/OpenLineage.json#/definitions/SourceCodeLocationJobFacet", "type": "git", "url": "https://github.com/some/airflow/dags/example/user_trends.py"}, "sql": {"_producer": "https://github.com/OpenLineage/OpenLineage/tree/0.18.0/client/python", "_schemaURL": "https://raw.githubusercontent.com/OpenLineage/OpenLineage/main/spec/OpenLineage.json#/definitions/SqlJobFacet", "query": "CREATE OR REPLACE TABLE TMP_DEMO.USER_COUNTS AS (\n\t\t\tSELECT DATE_TRUNC(DAY, created_at) date, COUNT(id) as user_count\n\t\t\tFROM TMP_DEMO.USER_HISTORY\n\t\t\tGROUP BY date\n\t\t\t)"}}, "name": "create_user_counts", "namespace": "python_client"}, "outputs": [{"facets": {}, "name": "tmp_demo.user_counts", "namespace": "python_client"}], "producer": "https://github.com/openlineage-user", "run": {"facets": {"nominalTime": {"_producer": "https://github.com/OpenLineage/OpenLineage/tree/0.18.0/client/python", "_schemaURL": "https://raw.githubusercontent.com/OpenLineage/OpenLineage/main/spec/OpenLineage.json#/definitions/NominalTimeRunFacet", "nominalStartTime": "2022-04-14T02:12:00Z"}}, "runId": "b7304cdf-7c9e-4183-bd9d-1474cb86bad3"}} +DEBUG:urllib3.connectionpool:http://localhost:5000 "POST /api/v1/lineage HTTP/1.1" 201 0 +.... +``` + +DEBUG will also produce meaningful error messages when something does not work correctly. For example, if the backend server does not exist, you would get the following messages in your console output: + +``` +DEBUG:openlineage.client.transport.http:Constructing openlineage client to send events to http://localhost:5000 +DEBUG:openlineage.client.transport.http:Sending openlineage event {"eventTime": "2022-12-07T02:15:58.090994+00:00", "eventType": "START", "inputs": [{"facets": {"schema": {"_producer": "https://github.com/OpenLineage/OpenLineage/tree/0.18.0/client/python", "_schemaURL": "https://raw.githubusercontent.com/OpenLineage/OpenLineage/main/spec/OpenLineage.json#/definitions/SchemaDatasetFacet", "fields": [{"description": "the user id", "name": "id", "type": "BIGINT"}, {"description": "the user id", "name": "email_domain", "type": "VARCHAR"}, {"description": "the user id", "name": "status", "type": "BIGINT"}, {"description": "date and time of creation of the user", "name": "created_at", "type": "DATETIME"}, {"description": "the last time this row was updated", "name": "updated_at", "type": "DATETIME"}, {"description": "the time the data was fetched", "name": "fetch_time_utc", "type": "DATETIME"}, {"description": "the original file this data was ingested from", "name": "load_filename", "type": "VARCHAR"}, {"description": "the row number in the original file", "name": "load_filerow", "type": "INT"}, {"description": "the time the data was ingested", "name": "load_timestamp", "type": "DATETIME"}]}}, "name": "temp_demo.user_history", "namespace": "python_client"}], "job": {"facets": {"sourceCodeLocation": {"_producer": "https://github.com/OpenLineage/OpenLineage/tree/0.18.0/client/python", "_schemaURL": "https://raw.githubusercontent.com/OpenLineage/OpenLineage/main/spec/OpenLineage.json#/definitions/SourceCodeLocationJobFacet", "type": "git", "url": "https://github.com/some/airflow/dags/example/user_trends.py"}, "sql": {"_producer": "https://github.com/OpenLineage/OpenLineage/tree/0.18.0/client/python", "_schemaURL": "https://raw.githubusercontent.com/OpenLineage/OpenLineage/main/spec/OpenLineage.json#/definitions/SqlJobFacet", "query": "CREATE OR REPLACE TABLE TMP_DEMO.USER_COUNTS AS (\n\t\t\tSELECT DATE_TRUNC(DAY, created_at) date, COUNT(id) as user_count\n\t\t\tFROM TMP_DEMO.USER_HISTORY\n\t\t\tGROUP BY date\n\t\t\t)"}}, "name": "create_user_counts", "namespace": "python_client"}, "outputs": [{"facets": {}, "name": "tmp_demo.user_counts", "namespace": "python_client"}], "producer": "https://github.com/openlineage-user", "run": {"facets": {"nominalTime": {"_producer": "https://github.com/OpenLineage/OpenLineage/tree/0.18.0/client/python", "_schemaURL": "https://raw.githubusercontent.com/OpenLineage/OpenLineage/main/spec/OpenLineage.json#/definitions/NominalTimeRunFacet", "nominalStartTime": "2022-04-14T00:12:00Z"}}, "runId": "c321058c-276b-4d1a-a260-8e16f2137c2b"}} +DEBUG:urllib3.connectionpool:Starting new HTTP connection (1): localhost:5000 +Traceback (most recent call last): + File "/opt/homebrew/Caskroom/miniconda/base/envs/openlineage/lib/python3.9/site-packages/urllib3/connection.py", line 174, in _new_conn + conn = connection.create_connection( + File "/opt/homebrew/Caskroom/miniconda/base/envs/openlineage/lib/python3.9/site-packages/urllib3/util/connection.py", line 95, in create_connection + raise err + File "/opt/homebrew/Caskroom/miniconda/base/envs/openlineage/lib/python3.9/site-packages/urllib3/util/connection.py", line 85, in create_connection + sock.connect(sa) +ConnectionRefusedError: [Errno 61] Connection refused +``` + +If you wish to output loggigng message to a file, you can modify the basic configuration as following: +```python +... +logging.basicConfig(filename='debug.log', encoding='utf-8', level=logging.DEBUG) +... +``` + +And the output will be saved to a file `debug.log`. + +### Further readings +- https://docs.python.org/3/library/logging.html +- https://realpython.com/python-logging/ diff --git a/versioned_docs/version-1.24.1/development/developing/spark/_category_.json b/versioned_docs/version-1.24.1/development/developing/spark/_category_.json new file mode 100644 index 0000000..92ba6d8 --- /dev/null +++ b/versioned_docs/version-1.24.1/development/developing/spark/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Spark", + "position": 3 +} diff --git a/versioned_docs/version-1.24.1/development/developing/spark/built_in_lineage.md b/versioned_docs/version-1.24.1/development/developing/spark/built_in_lineage.md new file mode 100644 index 0000000..cc4921c --- /dev/null +++ b/versioned_docs/version-1.24.1/development/developing/spark/built_in_lineage.md @@ -0,0 +1,269 @@ +--- +sidebar_position: 2 +title: Integrating with Spark extensions +--- + +:::info +Feature available since 1.11. +::: + +:::info +To get even better lineage coverage for Spark extensions, we recommend implementing lineage extraction +directly within the extensions' code and this page contains documentation on that. +::: + +Spark ecosystem comes with a plenty of extensions that affect lineage extraction logic. +`spark-interfaces-scala` package contains Scala traits which can be implemented on the extension's side to +generate high quality metadata for OpenLineage events. + +In general, a mechanism works in a following way: + * Package `spark-interfaces-scala` is a simple and lightweight. + Its only purpose is to contain methods to generate OpenLineage model objects (like facets, datasets) programmatically + and interfaces' definitions (Scala traits) to expose lineage information from nodes of Spark logical plan. + * Any extension that adds custom node to Spark logical plan can implement the interfaces. + * Spark OpenLineage integration, when traversing logical plan tree, checks if its nodes implement + those interfaces and uses their methods to extract lineage metadata from those nodes. + +## Problem definition + +OpenLineage Spark integration is based on `openlineage-spark-*.jar` library attached +to a running Spark job. The library traverses Spark logical plan on run state updates to generate +OpenLineage events. While traversing plan's tree, the library extracts input and output datasets +as well as other interesting aspects of this particular job, run or datasets involved in the processing. +Extraction code for each node is contained within `openlineage-spark.jar`. + +Two main issues with this approach are: +* Spark ecosystem comes with plenty of extensions and many of them add + custom nodes into the logical plan of the query executed. + These nodes need to be traversed and understood by `openlineage-spark` to + extract lineage out of them. This brings serious complexity to the code base. Not only OpenLineage + has to cover multiple Spark versions, but also each Spark version supports multiple versions of + multiple extensions. + +* Spark extensions know a lot of valuable metadata that can be published within OpenLineage events. + It makes sense to allow extensions publish facets on their own. This [issue](https://github.com/OpenLineage/OpenLineage/issues/167) + contains great example of useful aspects that can be retrieved from Iceberg extension. + +## Solution + +A remedy to the problems above is to migrate lineage extraction logic directly to +Spark `LogicalPlan` nodes. The advantages of this approach are: +* **One-to-one version matching** - there is no further need for a single integration code to support + multiple versions of a Spark extension. +* **Avoid breaking changes** - this approach limits amount of upgrades that break integration between + `openlineage-spark` and other extensions, as lineage extraction code is directly put into extensions + codebase which assures that changes on the Spark extension side are not breaking it. + +`spark-interfaces-scala` package contains traits that shall be implemented as well as extra utility +classes to let integrate OpenLineage within any Spark extension. + +Package code should not be shipped with extension that implements traits. Dependency should be marked +as compile-only. Implementation of the code calling the methods should be responsible for providing +`spark-interfaces-scala` on the classpath. + +Please note that this package as well as the traits should be considered experimental and may evolve +in the future. All the current logic has been put into `*.scala.v1` package. First, it is possible +we develop the same interfaces in Java. Secondly, in case of non-compatible changes, +we are going to release `v2` interfaces. We're aiming to support different versions within spark +integration. + +## Extracting lineage from plan nodes + +### The easy way - return all the metadata about dataset + +Spark optimized logical plan is a tree created of `LogicalPlan` nodes. Oftentimes, it is a Spark extension +internal class that implements `LogicalPlan` and becomes node within a tree. In this case, it is +reasonable to implement lineage extraction logic directly within that class. + +Two interfaces have been prepared: +* `io.openlineage.spark.builtin.scala.v1.InputLineageNode` with `getInputs` method, +* `io.openlineage.spark.builtin.scala.v1.OutputLineageNode` with `getOutputs` method. + +They return list of `InputDatasetWithFacets` and `OutputDatasetWithFacets` respectively. Each trait has methods +to expose dataset facets as well facets that relate to particular dataset only in the context of +current run, like amount of bytes read from a certain dataset. + +### When extracting dataset name and namespace is non-trivial + +The simple approach is to let the extension provide dataset identifier containing `namespace` as `name`. +However, in some cases this can be cumbersome. +For example, within Spark's codebase there are several nodes whose output dataset is +`DatasourceV2Relation` and extracting dataset's `name` and `namespace` from such nodes includes +non-trivial logic. In such scenarios, it does not make sense to require an extension to re-implement +the logic already present within `spark-openlineage` code. To solve this, the traits introduce datasets +with delegates which don't contain exact dataset identifier with name and namespace. Instead, they contain +pointer to other member of the plan where `spark-openlineage` should extract identifier from. + +For this scenario, case classes `InputDatasetWithDelegate` and +`OutputDatasetWithDelegate` have been created. They allow assigning facets to a dataset, while +still letting other code to extract metadata for the same dataset. The classes contain `node` object +property which defines node within logical plan to contain more metadata about the dataset. +In other words, returning a delegate will make OpenLineage Spark integration extract lineage from +the delegate and enrich it with facets attached to a delegate. + +An example implementation for `ReplaceIcebergData` node: + +```scala +override def getOutputs(context: OpenLineageContext): List[OutputDatasetWithFacets] = { + if (!table.isInstanceOf[DataSourceV2Relation]) { + List() + } else { + val relation = table.asInstanceOf[DataSourceV2Relation] + val datasetFacetsBuilder: DatasetFacetsBuilder = { + new OpenLineage.DatasetFacetsBuilder() + .lifecycleStateChange( + context + .openLineage + .newLifecycleStateChangeDatasetFacet( + OpenLineage.LifecycleStateChangeDatasetFacet.LifecycleStateChange.OVERWRITE, + null + ) + ) + } + + // enrich dataset with additional facets like a dataset version + DatasetVersionUtils.getVersionOf(relation) match { + case Some(version) => datasetFacetsBuilder.version( + context + .openLineage + .newDatasetVersionDatasetFacet(version) + ) + case None => + } + + // return output dataset while pointing that more dataset details shall be extracted from + // `relation` object. + List( + OutputDatasetWithDelegate( + relation, + datasetFacetsBuilder, + new OpenLineage.OutputDatasetOutputFacetsBuilder() + ) + ) + } + } +``` + +### When extension implements a relation within standard LogicalRelation + +In this scenario, Spark extension is using standard `LogicalRelation` node within the logical plan. +However, the node may contain extension's specific `relation` property which extends +`org.apache.spark.sql.sources.BaseRelation`. In this case, we allow `BaseRelation` implementation +to implement `io.openlineage.spark.builtin.scala.v1.LineageRelation` interface. + +### When extension implements a provider to create relations + +An extension can contain implementation of `org.apache.spark.sql.sources.RelationProvider` +which again does not use any custom nodes within the logical plan, but provides classes to +create relations. To support this scenario, `io.openlineage.spark.builtin.scala.v1.LineageDatasetProvider` +can be implemented. + +### When extension uses Spark DataSource v2 API + +Some extensions rely on Spark DataSource V2 API and implement TableProvider, Table, ScanBuilder etc. +that are used within Spark to create `DataSourceV2Relation` instances. + +A logical plan node `DataSourceV2Relation` contains `Table` field with a properties map of type +`Map`. `openlineage-spark` uses this map to extract dataset information for lineage +event from `DataSourceV2Relation`. It is checking for the properties `openlineage.dataset.name` and +`openlineage.dataset.namespace`. If they are present, it uses them to identify a dataset. Please +be aware that namespace and name need to conform to [naming convention](https://github.com/OpenLineage/OpenLineage/blob/main/spec/Naming.md). + +Properties can be also used to pass any dataset facet. For example: +``` +openlineage.dataset.facets.customFacet={"property1": "value1", "property2": "value2"} +``` +will enrich dataset with `customFacet`: +```json +"inputs": [{ +"name": "...", +"namespace": "...", +"facets": { + "customFacet": { + "property1": "value1", + "property2": "value2", + "_producer": "..." + }, + "schema": { } +}] +``` + +## Column Level Lineage + +Lineage is extracted from the optimized logical plan. The plan is a tree with the root being the output +dataset and leaves the input datasets. In order to collect column level lineage we need to track dependencies between input and output fields. + +Each node within plan has to understand which input attributes it consumes and how they affect output attributes produced by the node. +Attribute fields within plan are identified by `ExprId`. In order to build column level lineage, +dependencies between input and output attributes for each plan's node need to be identified. + +In order to emit column level lineage from a given spark node, `io.openlineage.spark.builtin.scala.v1.ColumnLevelLineageNode` +trait has to be implemented. The trait should implement following methods +* `def columnLevelLineageInputs(context: OpenLineageContext): List[DatasetFieldLineage]` +* `def columnLevelLineageOutputs(context: OpenLineageContext): List[DatasetFieldLineage]` +* `columnLevelLineageDependencies(context: OpenLineageContext): List[ExpressionDependency]` + +First two methods are used to identify input and output fields as well as matching the fields +to expressions which use the fields. Returned field lineage can contain identifier, which is mostly +field name, but can also be represented by a delegate object pointing to expression where +the identifier shall be extracted from. + +`ExpressionDependency` allows matching, for each Spark plan node, input expressions onto output +expressions. Having all the inputs and outputs identified, as well as intermediate dependencies between +the expressions used, allow building column level lineage facet. + +Code below contains an example of `ColumnLevelLineageNode` within Iceberg's `MergeRows` class +that implements `MERGE INTO` for Spark 3.4: + +```scala +case class MergeRows( + ..., + matchedOutputs: Seq[Seq[Seq[Expression]]], + notMatchedOutputs: Seq[Seq[Expression]], + output: Seq[Attribute], + child: LogicalPlan +) extends UnaryNode with ColumnLevelLineageNode { + + override def columnLevelLineageDependencies(context: OpenLineageContext): List[ExpressionDependency] = { + val deps: ListBuffer[ExpressionDependency] = ListBuffer() + + // For each matched and not-matched outputs `ExpressionDependencyWithDelegate` is created + // This means for output expression id `attr.exprId.id`, `expr` node needs to be examined to + // detect input expression ids. + output.zipWithIndex.foreach { + case (attr: Attribute, index: Int) => + notMatchedOutputs + .toStream + .filter(exprs => exprs.size > index) + .map(exprs => exprs(index)) + .foreach(expr => deps += ExpressionDependencyWithDelegate(OlExprId(attr.exprId.id), expr)) + matchedOutputs + .foreach { + matched => + matched + .toStream + .filter(exprs => exprs.size > index) + .map(exprs => exprs(index)) + .foreach(expr => deps += ExpressionDependencyWithDelegate(OlExprId(attr.exprId.id), expr)) + } + } + + deps.toList + } + + override def columnLevelLineageInputs(context: OpenLineageContext): List[DatasetFieldLineage] = { + // Delegates input field extraction to other logical plan node + List(InputDatasetFieldFromDelegate(child)) + } + + override def columnLevelLineageOutputs(context: OpenLineageContext): List[DatasetFieldLineage] = { + // For each output attribute return its name and ExprId assigned to it. + // We're aiming for lineage traits to stay Spark version agnostic and don't want to rely + // on Spark classes. That's why `OlExprId` is used to pass `ExprId` + output.map(a => OutputDatasetField(a.name, OlExprId(a.exprId.id))).toList + } + } +``` + +Please note that `ExpressionDependency` can be extended in the future to contain more information +on how inputs were used to produce a certain output attribute. \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/development/developing/spark/setup.md b/versioned_docs/version-1.24.1/development/developing/spark/setup.md new file mode 100644 index 0000000..d3131fb --- /dev/null +++ b/versioned_docs/version-1.24.1/development/developing/spark/setup.md @@ -0,0 +1,56 @@ +--- +sidebar_position: 1 +title: Build +--- + +# Build + +## Java 17 + +Testing requires a Java 17 JVM to test the Scala Spark components. +Use your favourite tool (sdkman, `/usr/libexec/java_home`) to set `JAVA_HOME` and `PATH` environmental variables properly. + +## Preparation + +The integration depends on four libraries that are build locally `openlineage-java`, `spark-extension-interfaces`, `spark-extension-entrypoint` and `openlineage-sql-java`, +so before any testing or building of a package you need to publish the appropriate artifacts to local maven repository. +To build the packages you need to execute: + +```sh +./buildDependencies.sh +``` + +## Testing + +To run the tests, from the current directory run: + +```sh +./gradlew test +``` + +To run the integration tests, from the current directory run: + +```sh +./gradlew integrationTest +``` + +## Build jar + +```sh +./gradlew shadowJar +``` + +## Contributing + +If contributing changes, additions or fixes to the Spark integration, please include the following header in any new `.java` files: + +``` +/* +/* Copyright 2018-2024 contributors to the OpenLineage project +/* SPDX-License-Identifier: Apache-2.0 +*/ +``` + +A Github Action checks for headers in new `.java` files when pull requests are opened. + +Thank you for your contributions to the project! \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/development/examples.md b/versioned_docs/version-1.24.1/development/examples.md new file mode 100644 index 0000000..39337ca --- /dev/null +++ b/versioned_docs/version-1.24.1/development/examples.md @@ -0,0 +1,173 @@ +--- +title: Example Lineage Events +sidebar_position: 2 +--- + +## Simple Examples + +### START event with single input + +This is a START event with a single PostgreSQL input dataset. + +```json +{ + "eventType": "START", + "eventTime": "2020-12-28T19:52:00.001+10:00", + "run": { + "runId": "d46e465b-d358-4d32-83d4-df660ff614dd" + }, + "job": { + "namespace": "workshop", + "name": "process_taxes" + }, + "inputs": [{ + "namespace": "postgres://workshop-db:None", + "name": "workshop.public.taxes" + }], + "producer": "https://github.com/OpenLineage/OpenLineage/blob/v1-0-0/client" +} +``` + +### COMPLETE event with single output + +This is a COMPLETE event with a single PostgreSQL output dataset. + +```json +{ + "eventType": "COMPLETE", + "eventTime": "2020-12-28T20:52:00.001+10:00", + "run": { + "runId": "d46e465b-d358-4d32-83d4-df660ff614dd" + }, + "job": { + "namespace": "workshop", + "name": "process_taxes" + }, + "outputs": [{ + "namespace": "postgres://workshop-db:None", + "name": "workshop.public.unpaid_taxes" + }], + "producer": "https://github.com/OpenLineage/OpenLineage/blob/v1-0-0/client" +} +``` + +## Complex Examples + +### START event with Facets (run and job) + +This is a START event with run and job facets of Apache Airflow. + +```json +{ + "eventType": "START", + "eventTime": "2020-12-28T19:52:00.001+10:00", + "run": { + "runId": "d46e465b-d358-4d32-83d4-df660ff614dd" + "facets": { + "airflow_runArgs": { + "_producer": "https://github.com/OpenLineage/OpenLineage/tree/0.10.0/integration/airflow", + "_schemaURL": "https://raw.githubusercontent.com/OpenLineage/OpenLineage/main/spec/OpenLineage.json#/definitions/BaseFacet", + "externalTrigger": true + }, + "nominalTime": { + "_producer": "https://github.com/OpenLineage/OpenLineage/tree/0.10.0/integration/airflow", + "_schemaURL": "https://raw.githubusercontent.com/OpenLineage/OpenLineage/main/spec/OpenLineage.json#/definitions/NominalTimeRunFacet", + "nominalStartTime": "2022-07-29T14:14:31.458067Z" + }, + "parentRun": { + "_producer": "https://github.com/OpenLineage/OpenLineage/tree/0.10.0/integration/airflow", + "_schemaURL": "https://raw.githubusercontent.com/OpenLineage/OpenLineage/main/spec/OpenLineage.json#/definitions/ParentRunFacet", + "job": { + "name": "etl_orders", + "namespace": "cosmic_energy" + }, + "run": { + "runId": "1ba6fdaa-fb80-36ce-9c5b-295f544ec462" + } + } + } + }, + "job": { + "namespace": "workshop", + "name": "process_taxes", + "facets": { + "documentation": { + "_producer": "https://github.com/OpenLineage/OpenLineage/tree/0.10.0/integration/airflow", + "_schemaURL": "https://raw.githubusercontent.com/OpenLineage/OpenLineage/main/spec/OpenLineage.json#/definitions/DocumentationJobFacet", + "description": "Process taxes." + }, + "sql": { + "_producer": "https://github.com/OpenLineage/OpenLineage/tree/0.10.0/integration/airflow", + "_schemaURL": "https://raw.githubusercontent.com/OpenLineage/OpenLineage/main/spec/OpenLineage.json#/definitions/SqlJobFacet", + "query": "INSERT into taxes values(1, 100, 1000, 4000);" + } + }, + }, + "inputs": [{ + "namespace": "postgres://workshop-db:None", + "name": "workshop.public.taxes" + }], + "producer": "https://github.com/OpenLineage/OpenLineage/blob/v1-0-0/client" +} +``` + +### COMPLETE event with Facets (dataset) + +This is a COMPLETE event with dataset facet of Database table. + +```json +{ + "eventType": "COMPLETE", + "eventTime": "2020-12-28T20:52:00.001+10:00", + "run": { + "runId": "d46e465b-d358-4d32-83d4-df660ff614dd" + }, + "job": { + "namespace": "workshop", + "name": "process_taxes" + }, + "outputs": [{ + "namespace": "postgres://workshop-db:None", + "name": "workshop.public.unpaid_taxes", + "facets": { + "dataSource": { + "_producer": "https://github.com/OpenLineage/OpenLineage/tree/0.10.0/integration/airflow", + "_schemaURL": "https://raw.githubusercontent.com/OpenLineage/OpenLineage/main/spec/OpenLineage.json#/definitions/DataSourceDatasetFacet", + "name": "postgres://workshop-db:None", + "uri": "workshop-db" + }, + "schema": { + "_producer": "https://github.com/OpenLineage/OpenLineage/tree/0.10.0/integration/airflow", + "_schemaURL": "https://raw.githubusercontent.com/OpenLineage/OpenLineage/main/spec/OpenLineage.json#/definitions/SchemaDatasetFacet", + "fields": [ + { + "name": "id", + "type": "SERIAL PRIMARY KEY" + }, + { + "name": "tax_dt", + "type": "TIMESTAMP NOT NULL" + }, + { + "name": "tax_item_id", + "type": "INTEGER REFERENCES tax_itemsid" + }, + { + "name": "amount", + "type": "INTEGER NOT NULL" + }, + { + "name": "ref_id", + "type": "INTEGER REFERENCES refid" + }, + { + "name": "comment", + "type": "TEXT" + } + ] + } + } + }], + "producer": "https://github.com/OpenLineage/OpenLineage/blob/v1-0-0/client" +} +``` \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/development/ol-proxy.md b/versioned_docs/version-1.24.1/development/ol-proxy.md new file mode 100644 index 0000000..a9f046c --- /dev/null +++ b/versioned_docs/version-1.24.1/development/ol-proxy.md @@ -0,0 +1,57 @@ +--- +title: OpenLineage Proxy +sidebar_position: 3 +--- + +OpenLineage Proxy is a simple Java server that can be used to monitor the JSON events that OpenLineage client emits, as well as tunnel the transmission to the OpenLineage backend such as [Marquez](https://marquezproject.ai/). + +When you are unable to collect logs on the client side, but want to make sure the event that gets emitted are valid and correct, you can use OpenLineage Proxy to verify the messages. + +## Accessing the proxy +OpenLineage proxy can be obtained via github: +``` +git clone https://github.com/OpenLineage/OpenLineage.git +cd OpenLineage/proxy/backend +``` + +## Building the proxy +To build the proxy jar, run +``` +$ ./gradlew build +``` + +The packaged jar file can be found under `./build/libs/` + +## Running the proxy + +OpenLineage Proxy requires configuration file named `proxy.yml`. There is an [example](https://github.com/OpenLineage/OpenLineage/blob/main/proxy/backend/proxy.example.yml) that you can copy and name it as `proxy.yml`. + +``` +cp proxy.example.yml proxy.yml +``` + +By default, the OpenLineage proxy uses the following ports: + +- TCP port 8080 is available for the HTTP API server. +- TCP port 8081 is available for the admin interface. + +You can then run the proxy using gradlew: +``` +$ ./gradlew runShadow +``` + +## Monitoring OpenLineage events via Proxy + +When proxy is running, you can start sending your OpenLineage events just as the same way as you would be sending to any OpenLineage backend server. For example, in your URL for the OpenLineage backend, you can specify it as `http://localhost:8080/api/v1/lineage`. + +Once the message is sent to the proxy, you will see the OpenLineage message content (JSON) to the console output of the proxy. You can also specify in the configuration to store the messages into the log file. + +> You might have noticed that OpenLineage client (python, java) simply requires `http://localhost:8080` as the URL endpoint. This is possible because the client code adds the `/api/v1/lineage` internally before it makes the request. If you are not using OpenLineage client library to emit OpenLineage events, you must use the full URL in order for the proxy to receive the data correctly. + +## Forwarding the data +Not only the OpenLineage proxy is useful in receiving the monitoring the OpenLineage events, it can also be used to relay the events to other endpoints. Please see the [example](https://github.com/OpenLineage/OpenLineage/blob/main/proxy/backend/proxy.example.yml) of how to set the proxy to relay the events via Kafka topic or HTTP endpoint. + +## Other ways to run OpenLineage Proxy +- You do not have to clone the git repo and build all the time. OpenLineage proxy is published and available in [Maven Repository](https://mvnrepository.com/artifact/io.openlineage/openlineage-proxy/). +- You can also run OpenLineage Proxy as a [docker container](https://github.com/OpenLineage/OpenLineage/blob/main/proxy/backend/Dockerfile). +- There is also a [helm chart for Kubernetes](https://github.com/OpenLineage/OpenLineage/tree/main/proxy/backend/chart) available. diff --git a/versioned_docs/version-1.24.1/faq.md b/versioned_docs/version-1.24.1/faq.md new file mode 100644 index 0000000..5ab1a26 --- /dev/null +++ b/versioned_docs/version-1.24.1/faq.md @@ -0,0 +1,18 @@ +--- +title: Frequently Asked Questions +sidebar_position: 7 +--- + +:::info +This page needs your contribution! Please contribute new questions (or answers) using the edit link at the bottom. +::: + +### Is OpenLineage a metadata server? + +No. OpenLineage is, at its core, a specification for lineage metadata. But it also contains a collection of integrations, examples, and tools. + +If you are looking for a metadata server that can receive and analyze OpenLineage events, check out [Marquez](https://marquezproject.ai). + +### Is there room for another question on this page? + +You bet! There's always room. Submit an issue or pull request using the edit button at the bottom. diff --git a/versioned_docs/version-1.24.1/guides/_category_.json b/versioned_docs/version-1.24.1/guides/_category_.json new file mode 100644 index 0000000..6b51b67 --- /dev/null +++ b/versioned_docs/version-1.24.1/guides/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Guides", + "position": 6 +} diff --git a/versioned_docs/version-1.24.1/guides/about.md b/versioned_docs/version-1.24.1/guides/about.md new file mode 100644 index 0000000..6a2782c --- /dev/null +++ b/versioned_docs/version-1.24.1/guides/about.md @@ -0,0 +1,15 @@ +--- +sidebar_position: 1 +--- + +# About These Guides + +The following tutorials take you through the process of exploiting the lineage metadata provided by Marquez and OpenLineage to solve common data engineering problems and make new analytical and historical insights into your pipelines. + +The first tutorial, "Using OpenLineage with Spark," provides an introduction to OpenLineage's integration with Apache Spark. You will learn how to use Marquez and the OpenLineage standard to produce lineage metadata about jobs and datasets created using Spark and BigQuery in a Jupyter notebook environment. + +The second tutorial, "Using OpenLineage with Airflow," shows you how to use OpenLineage on Apache Airflow to produce data lineage on supported operators to emit lineage events to Marquez backend. The tutorial also introduces you to the OpenLineage proxy to monitor the event data being emitted. + +The third tutorial, "Backfilling Airflow DAGs Using Marquez," shows you how to use Marquez's Airflow integration and the Marquez CLI to backfill failing runs with the help of lineage metadata. You will learn how data lineage can be used to automate the backfilling process. + +The fourth tutorial, "Using Marquez with dbt," takes you through the process of setting up Marquez's dbt integration to harvest metadata produced by dbt. You will learn how to create a Marquez instance, install the integration, configure your dbt installation, and test the configuration using dbt. \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/guides/airflow-backfill-dags.md b/versioned_docs/version-1.24.1/guides/airflow-backfill-dags.md new file mode 100644 index 0000000..5e85c52 --- /dev/null +++ b/versioned_docs/version-1.24.1/guides/airflow-backfill-dags.md @@ -0,0 +1,197 @@ +--- +sidebar_position: 3 +--- + +# Backfilling Airflow DAGs Using Marquez + +#### Adapted from a [blog post](https://openlineage.io/blog/backfilling-airflow-dags-using-marquez/) by Willy Lulciuc + +This tutorial covers the use of lineage metadata in Airflow to backfill DAGs. Thanks to data lineage, backfilling does not have to be a tedious chore. + +Airflow supports backfilling DAG runs for a historical time window with a given start and end date. If a DAG (`example.etl_orders_7_days`) started failing on 2021-06-06, for example, you might want to reprocess the daily table partitions for that week (assuming all partitions have been backfilled upstream). This is possible using the [Airflow CLI](https://openlineage.io/blog/backfilling-airflow-dags-using-marquez/). In order to run the backfill for `example.etl_orders_7_days` using Airflow, create an Airflow instance and execute the following backfill command in a terminal window: + +``` +# Backfill weekly food orders +$ airflow dags backfill \ + --start-date 2021-06-06 \ + --end-date 2021-06-06 \ + example.etl_orders_7_days +``` + +Unfortunately, backfills are rarely so straightforward. Some questions remain: + +- How quickly can data quality issues be identified and explored? +- What alerting rules should be in place to notify downstream DAGs of possible upstream processing issues or failures? +- What effects (if any) would upstream DAGs have on downstream DAGs if dataset consumption were delayed? + +Managing lineage metadata with Marquez clears up much of the ambiguity that has surrounded backfilling. The key is to maintain inter-DAG dependencies and catalog historical runs of DAGs. + +## Exploring Lineage Metadata using Marquez + +### Prerequisites + +- Sample data (for the dataset used here, follow the instructions in the [Write Sample Lineage Metadata to Marquez](https://marquezproject.github.io/marquez/quickstart.html#write-sample-lineage-metadata-to-marquez) section of Marquez's [quickstart](https://marquezproject.github.io/marquez/quickstart.html) guide) +- Docker 17.05+ +- Docker Desktop +- Docker Compose +- jq + +:::info +If you are using macOS Monterey (macOS 12), port 5000 will have to be released by [disabling the AirPlay Receiver](https://developer.apple.com/forums/thread/682332). Also, port 3000 will need to be free if access to the Marquez web UI is desired. +::: + +### Query the Lineage Graph + +After running the seed command in the quickstart guide, check to make sure Marquez is up by visiting http://localhost:3000. The page should display an empty Marquez instance and a message saying there is no data. Also, it should be possible to see the server output from requests in the terminal window where Marquez is running. This window should remain open. As you progress through the tutorial, feel free to experiment with the web UI. Use truncated strings (e.g., "example.etl_orders_7_days" instead of "job:food_delivery:example.etl_orders_7_days") to find the datasets referenced below. + +In Marquez, each dataset and job has its own globally unique node ID that can be used to query the lineage graph. The LineageAPI returns a set of nodes consisting of edges. An edge is directed and has a defined origin and destination. A lineage graph may contain the following node types: `dataset::`, `job::`. + +Start by querying the lineage graph of the seed data via the CLI. The `etl_orders_7_days` DAG has the node ID `job:food_delivery:example.etl_orders_7_days`. To see the graph, run the following in a new terminal window: + +``` +$ curl -X GET "http://localhost:5000/api/v1-beta/lineage?nodeId=job:food_delivery:example.etl_orders_7_days" +``` + +Notice in the returned lineage graph that the DAG input datasets are `public.categories`, `public.orders`, and `public.menus`, while `public.orders_7_days` is the output dataset. The response should look something like this: + +``` +{ + "graph": [{ + "id": "job:food_delivery:example.etl_orders_7_days", + "type": "JOB", + "data": { + "type": "BATCH", + "id": { + "namespace": "food_delivery", + "name": "example.etl_orders_7_days" + }, + "name": "example.etl_orders_7_days", + "createdAt": "2021-06-06T14:50:13.931946Z", + "updatedAt": "2021-06-06T14:57:54.037399Z", + "namespace": "food_delivery", + "inputs": [ + {"namespace": "food_delivery", "name": "public.categories"}, + {"namespace": "food_delivery", "name": "public.menu_items"}, + {"namespace": "food_delivery", "name": "public.orders"}, + {"namespace": "food_delivery", "name": "public.menus"} + ], + "outputs": [ + {"namespace": "food_delivery", "name": "public.orders_7_days"} + ], + "location": "https://github.com/example/jobs/blob/2294bc15eb49071f38425dc927e48655530a2f2e/etl_orders_7_days.py", + "context": { + "sql": "INSERT INTO orders_7_days (order_id, placed_on, discount_id, menu_id, restaurant_id, menu_item_id, category_id)\n SELECT o.id AS order_id, o.placed_on, o.discount_id, m.id AS menu_id, m.restaurant_id, mi.id AS menu_item_id, c.id AS category_id\n FROM orders AS o\n INNER JOIN menu_items AS mi\n ON menu_items.id = o.menu_item_id\n INNER JOIN categories AS c\n ON c.id = mi.category_id\n INNER JOIN menu AS m\n ON m.id = c.menu_id\n WHERE o.placed_on >= NOW() - interval '7 days';" + }, + "description": "Loads newly placed orders weekly.", + "latestRun": { + "id": "5c7f0dc4-d3c1-4f16-9ac3-dc86c5da37cc", + "createdAt": "2021-06-06T14:50:36.853459Z", + "updatedAt": "2021-06-06T14:57:54.037399Z", + "nominalStartTime": "2021-06-06T14:54:00Z", + "nominalEndTime": "2021-06-06T14:57:00Z", + "state": "FAILED", + "startedAt": "2021-06-06T14:54:14.037399Z", + "endedAt": "2021-06-06T14:57:54.037399Z", + "durationMs": 220000, + "args": {}, + "location": "https://github.com/example/jobs/blob/2294bc15eb49071f38425dc927e48655530a2f2e/etl_orders_7_days.py", + "context": { + "sql": "INSERT INTO orders_7_days (order_id, placed_on, discount_id, menu_id, restaurant_id, menu_item_id, category_id)\n SELECT o.id AS order_id, o.placed_on, o.discount_id, m.id AS menu_id, m.restaurant_id, mi.id AS menu_item_id, c.id AS category_id\n FROM orders AS o\n INNER JOIN menu_items AS mi\n ON menu_items.id = o.menu_item_id\n INNER JOIN categories AS c\n ON c.id = mi.category_id\n INNER JOIN menu AS m\n ON m.id = c.menu_id\n WHERE o.placed_on >= NOW() - interval '7 days';" + }, + "facets": {} + } + }, + "inEdges": [ + {"origin": "dataset:food_delivery:public.categories", "destination": "job:food_delivery:example.etl_orders_7_days"}, "destination": "job:food_delivery:example.etl_orders_7_days"}, + {"origin": "dataset:food_delivery:public.orders", "destination": "job:food_delivery:example.etl_orders_7_days"}, + {"origin": "dataset:food_delivery:public.menus", "destination": "job:food_delivery:example.etl_orders_7_days"} + ], + "outEdges": [ + {"origin": "job:food_delivery:example.etl_orders_7_days", "destination": "dataset:food_delivery:public.orders_7_days"} + ] + } + }, ...] +} +``` + +To see a visualization of the graph, search the web UI with `public.delivery_7_days`. + +### Backfill a DAG Run + +![Backfill](backfill.png) + +Figure 1: Backfilled daily table partitions + +To run a backfill for `example.etl_orders_7_days` using the DAG lineage metadata stored in Marquez, query the lineage graph for the upstream DAG where an error originated. In this case, the `example.etl_orders` DAG upstream of `example.etl_orders_7_days` failed to write some of the daily table partitions needed for the weekly food order trends report. To fix the weekly trends report, backfill the missing daily table partitions `public.orders_2021_06_04`, `public.orders_2021_06_05`, and `public.orders_2021_06_06` using the Airflow CLI: + +``` +# Backfill daily food orders +$ airflow dags backfill \ + --start-date 2021-06-04 \ + --end-date 2021-06-06 \ + example.etl_orders +``` + +![DAG Deps](inter-dag-deps.png) + +Figure 2: Airflow inter-DAG dependencies + +Then, using the script `backfill.sh` defined below, we can easily backfill all DAGs downstream of `example.etl_orders`: + +(Note: Make sure you have jq installed before running `backfill.sh`.) + +``` +#!/bin/bash +# +# Backfill DAGs automatically using lineage metadata stored in Marquez. +# +# Usage: $ ./backfill.sh +​ +set -e +​ +# Backfills DAGs downstream of the given node ID, recursively. +backfill_downstream_of() { + node_id="${1}" + # Get out edges for node ID + out_edges=($(echo $lineage_graph \ + | jq -r --arg NODE_ID "${node_id}" '.graph[] | select(.id==$NODE_ID) | .outEdges[].destination')) + for out_edge in "${out_edges[@]}"; do + # Run backfill if out edge is a job node (i.e. => ) + if [[ "${out_edge}" = job:* ]]; then + dag_id="${out_edge##*:}" + echo "backfilling ${dag_id}..." + airflow backfill --start_date "${start_date}" --end_date "${start_date}" "${dag_id}" + fi + # Follow out edges downstream, recursively + backfill_downstream_of "${out_edge}" + done +} +​ +start_date="${1}" +end_date="${2}" +dag_id="${3}" +​ +# (1) Build job node ID (format: 'job::') +node_id="job:food_delivery:${dag_id}" +​ +# (2) Get lineage graph +lineage_graph=$(curl -s -X GET "http://localhost:5000/api/v1-beta/lineage?nodeId=${node_id}") +​ +# (3) Run backfill +backfill_downstream_of "${node_id}" +``` + +When run, the script should output all backfilled DAGs to the console: + +``` +$ ./backfill.sh 2021-06-06 2021-06-06 example.etl_orders +backfilling example.etl_orders_7_days... +backfilling example.etl_delivery_7_days... +backfilling example.delivery_times_7_days... +``` + +### Conclusion + +The lineage metadata provided by Marquez can make the task of backfilling much easier. But lineage metadata can also help avoid the need to backfill altogether. Since Marquez collects DAG run metadata that can be viewed using the Runs API, building automated processes to check DAG run states and notify teams of upstream data quality issues is just one possible preventive measure. + +Explore Marquez's opinionated Metadata API and define your own automated process(es) for analyzing lineage metadata! Also, join our Slack channel or reach out to us on Twitter if you have questions. \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/guides/airflow-quickstart.md b/versioned_docs/version-1.24.1/guides/airflow-quickstart.md new file mode 100644 index 0000000..a7e0c9d --- /dev/null +++ b/versioned_docs/version-1.24.1/guides/airflow-quickstart.md @@ -0,0 +1,352 @@ +--- +sidebar_position: 2 +--- +# Getting Started with Airflow and OpenLineage+Marquez + +In this example, we'll walk you through how to enable Airflow DAGs to send lineage metadata to [Marquez](https://marquezproject.ai/) using OpenLineage. + +### You’ll Learn How To: + +* configure Airflow to send OpenLineage events to Marquez +* write OpenLineage-enabled DAGs +* troubleshoot a failing DAG using Marquez + +### Table of Contents + +1. [Step 1: Configure Your Astro Project](#configure-your-astro-project) +2. [Step 2: Add Marquez Services Using Docker Compose](#add-marquez-services-using-docker-compose) +3. [Step 3: Start Airflow with Marquez](#start-airflow-with-marquez) +4. [Step 4: Write Airflow DAGs](#write-airflow-dags) +5. [Step 5: View Collected Metadata](#view-collected-metadata) +6. [Step 6: Troubleshoot a Failing DAG with Marquez](#troubleshoot-a-failing-dag-with-marquez) + +## Prerequisites + +Before you begin, make sure you have installed: + +* [Docker 17.05](https://docs.docker.com/install)+ +* [Astro CLI](https://docs.astronomer.io/astro/cli/overview) +* [curl](https://curl.se/) + +> **Note:** We recommend that you have allocated at least **2 CPUs** and **8 GB** of memory to Docker. + +## Configure Your Astro Project + +Use the Astro CLI to create and run an Airflow project locally that will integrate with Marquez. + +1. In your project directory, create a new Astro project: + + ```sh + $ .. + $ mkdir astro-marquez-tutorial && cd astro-marquez-tutorial + $ astro dev init + ``` + +2. Using curl, change into new directory `docker` and download some scripts required by Marquez services: + + ```sh + $ mkdir docker && cd docker + $ curl -O "https://raw.githubusercontent.com/MarquezProject/marquez/main/docker/{entrypoint.sh,wait-for-it.sh}" + $ .. + ``` + + After executing the above, your project directory should look like this: + + ```sh + $ ls -a + . Dockerfile packages.txt + .. README.md plugins + .astro airflow_settings.yaml requirements.txt + .dockerignore dags tests + .env docker + .gitignore include + ``` + +3. Add the OpenLineage Airflow Provider and the Common SQL Provider to the requirements.txt file: + + ```txt + apache-airflow-providers-common-sql==1.7.2 + apache-airflow-providers-openlineage==1.1.0 + ``` + + For details about the Provider and its minimum requirements, see the Airflow [docs](https://airflow.apache.org/docs/apache-airflow-providers-openlineage/stable/index.html). + +4. To configure Astro to send lineage metadata to Marquez, add the following environment variables below to your Astro project's `.env` file: + + ```env + OPENLINEAGE_URL=http://host.docker.internal:5000 + OPENLINEAGE_NAMESPACE=example + AIRFLOW_CONN_EXAMPLE_DB=postgres://example:example@host.docker.internal:7654/example + ``` + + These variables allow Airflow to connect with the OpenLineage API and send events to Marquez. + +5. It is a good idea to have Airflow use a different port for Postgres than the default 5432, so run the following command to use port 5678 instead: + + ```sh + astro config set postgres.port 5678 + ``` + +6. Check the Dockerfile to verify that your installed version of the Astro Runtime is 9.0.0+ (to ensure that you will be using Airflow 2.7.0+). + + For example: + + ```txt + FROM quay.io/astronomer/astro-runtime:9.1.0 + ``` + +## Add Marquez and Database Services Using Docker Compose + +Astro supports manual configuration of services via Docker Compose using YAML. + +Create new file `docker-compose.override.yml` in your project and copy/paste the following into the file: + +```yml +version: "3.1" +services: + web: + image: marquezproject/marquez-web:latest + container_name: marquez-web + environment: + - MARQUEZ_HOST=api + - MARQUEZ_PORT=5000 + - WEB_PORT=3000 + ports: + - "3000:3000" + depends_on: + - api + + db: + image: postgres:14.9 + container_name: marquez-db + ports: + - "6543:6543" + environment: + - POSTGRES_USER=marquez + - POSTGRES_PASSWORD=marquez + - POSTGRES_DB=marquez + + example-db: + image: postgres:14.9 + container_name: example-db + ports: + - "7654:5432" + environment: + - POSTGRES_USER=example + - POSTGRES_PASSWORD=example + - POSTGRES_DB=example + + api: + image: marquezproject/marquez:latest + container_name: marquez-api + environment: + - MARQUEZ_PORT=5000 + - MARQUEZ_ADMIN_PORT=5001 + ports: + - "5000:5000" + - "5001:5001" + volumes: + - ./docker/wait-for-it.sh:/usr/src/app/wait-for-it.sh + links: + - "db:postgres" + depends_on: + - db + entrypoint: ["/bin/bash", "./wait-for-it.sh", "db:6543", "--", "./entrypoint.sh"] + + redis: + image: bitnami/redis:6.0.6 + environment: + - ALLOW_EMPTY_PASSWORD=yes +``` + +The above adds the Marquez API, database and Web UI, along with an additional Postgres database for the DAGs used in this example, to Astro's Docker container and configures them to use the scripts in the `docker` directory you previously downloaded from Marquez. + +## Start Airflow with Marquez + +Now you can start all services. To do so, execute the following: + +```bash +$ astro dev start +``` + +**The above command will:** + +* start Airflow +* start Marquez, including its API, database and UI +* create and start a Postgres server for DAG tasks + +To view the Airflow UI and verify it's running, open [http://localhost:8080](http://localhost:8080). Then, log in using the username and password `admin` / `admin`. You can also browse to [http://localhost:3000](http://localhost:3000) to view the Marquez UI. + +## Write Airflow DAGs + +In this step, you will create two new Airflow DAGs that perform simple tasks. The `counter` DAG adds 1 to a column every minute, while the `sum` DAG calculates a sum every five minutes. This will result in a simple pipeline containing two jobs and two datasets. + +### Create a `counter` DAG + +In `dags/`, create a file named `counter.py` and add the following code: + +```python +from airflow import DAG +from airflow.decorators import task +from airflow.providers.postgres.operators.postgres import PostgresOperator +from airflow.utils.dates import days_ago + +with DAG( + 'counter', + start_date=days_ago(1), + schedule='*/1 * * * *', + catchup=False, + is_paused_upon_creation=False, + max_active_runs=1, + description='DAG that generates a new count value equal to 1.' +): + + query1 = PostgresOperator( + task_id='if_not_exists', + postgres_conn_id='example_db', + sql=''' + CREATE TABLE IF NOT EXISTS counts ( + value INTEGER + );''' + ) + + query2 = PostgresOperator( + task_id='inc', + postgres_conn_id='example_db', + sql=''' + INSERT INTO counts (value) + VALUES (1) + ''' + ) + +query1 >> query2 +``` + +### Create a `sum` DAG + +In `dags/`, create a file named `sum.py` and add the following code: + +```python +from airflow import DAG +from airflow.providers.postgres.operators.postgres import PostgresOperator +from airflow.utils.dates import days_ago + +with DAG( + 'sum', + start_date=days_ago(1), + schedule='*/5 * * * *', + catchup=False, + is_paused_upon_creation=False, + max_active_runs=1, + description='DAG that sums the total of generated count values.' +): + + query1 = PostgresOperator( + task_id='if_not_exists', + postgres_conn_id='example_db', + sql=''' + CREATE TABLE IF NOT EXISTS sums ( + value INTEGER + );''' + ) + + query2 = PostgresOperator( + task_id='total', + postgres_conn_id='example_db', + sql=''' + INSERT INTO sums (value) + SELECT SUM(value) FROM counts; + ''' + ) + +query1 >> query2 +``` + +## View Collected Metadata + +To ensure that Airflow is executing `counter` and `sum`, navigate to the DAGs tab in Airflow and verify that they are both enabled and are in a _running_ state: + +![](./docs/astro-view-dags.png) + +To view DAG metadata collected by Marquez from Airflow, browse to the Marquez UI by visiting [http://localhost:3000](http://localhost:3000). Then, use the _search_ bar in the upper right-side of the page and search for the `counter.inc` job. To view lineage metadata for `counter.inc`, click on the job from the drop-down list: + +> **Note:** If the `counter.inc` job is not in the drop-down list, check to see if Airflow has successfully executed the DAG. + +

+ +

+ +If you take a quick look at the lineage graph for `counter.inc`, you should see `example.public.counts` as an output dataset and `sum.total` as a downstream job! + +![](./docs/astro-current-lineage-view-job.png) + +## Troubleshoot a Failing DAG with Marquez + +In this step, let's quickly walk through a simple troubleshooting scenario where the DAG `sum` begins to fail as the result of an upstream schema change for table `counts`. + +> **Tip:** It's helpful to apply the same code changes outlined below to your Airflow DAGs defined in **Step 6**. + +Let's say team `A` owns the DAG `counter`. Team `A` decides to update the tasks in `counter` to rename the `values` column in the `counts` table to `value_1_to_10` (without properly communicating the schema change!): + +```diff +query1 = PostgresOperator( +- task_id='if_not_exists', ++ task_id='alter_name_of_column', + postgres_conn_id='example_db', + sql=''' +- CREATE TABLE IF NOT EXISTS counts ( +- value INTEGER +- );''', ++ ALTER TABLE "counts" RENAME COLUMN "value" TO "value_1_to_10"; ++ ''' +) +``` + +```diff +query2 = PostgresOperator( + task_id='inc', + postgres_conn_id='example_db', + sql=''' +- INSERT INTO counts (value) ++ INSERT INTO counts (value_1_to_10) + VALUES (1) + ''', +) +``` + +Team `B`, unaware of the schema change, owns the DAG `sum` and begins to see DAG run metadata with _failed_ run states: + +![](./docs/astro-job-failure.png) + +But, team `B` is not sure what might have caused the DAG failure as no recent code changes have been made to the DAG. So, team `B` decides to check the schema of the input dataset: + +![](./docs/astro-lineage-view-dataset.png) + +Team `B` soon realizes that the schema has changed recently for the `counts` table! To fix the DAG, team `B` updates the `t2` task that calculates the count total to use the new column name: + +```diff +query2 = PostgresOperator( + task_id='total', + postgres_conn_id='example_db', + sql=''' + INSERT INTO sums (value) +- SELECT SUM(value) FROM counts; ++ SELECT SUM(value_1_to_10) FROM counts; + ''' +) +``` + +With the code change, the DAG `sum` begins to run successfully: + +![](./docs/astro-lineage-view-job-successful.png) + +_Congrats_! You successfully step through a troubleshooting scenario of a failing DAG using metadata collected with Marquez! You can now add your own DAGs to `dags/` to build more complex data lineage graphs. + +## Next Steps + +* Review the Marquez [HTTP API](https://marquezproject.github.io/marquez/openapi.html) used to collect Airflow DAG metadata and learn how to build your own integrations using OpenLineage. +* Take a look at [`openlineage-spark`](https://openlineage.io/docs/integrations/spark/) integration that can be used with Airflow. + +## Feedback + +What did you think of this example? You can reach out to us on [Slack](http://bit.ly/MqzSlack) and leave us feedback, or [open a pull request](https://github.com/MarquezProject/marquez/blob/main/CONTRIBUTING.md#submitting-a-pull-request) with your suggested changes! \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/guides/airflow_dev_setup.png b/versioned_docs/version-1.24.1/guides/airflow_dev_setup.png new file mode 100644 index 0000000000000000000000000000000000000000..b454c2dbb1cc4d1e0391caef4a21bd7fdbdb11f3 GIT binary patch literal 50816 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 literal 0 HcmV?d00001 diff --git a/versioned_docs/version-1.24.1/guides/airflow_proxy.md b/versioned_docs/version-1.24.1/guides/airflow_proxy.md new file mode 100644 index 0000000..18c0bd1 --- /dev/null +++ b/versioned_docs/version-1.24.1/guides/airflow_proxy.md @@ -0,0 +1,281 @@ +--- +sidebar_position: 6 +--- + +# Using the OpenLineage Proxy with Airflow + +This tutorial introduces you to using the [OpenLineage Proxy](https://github.com/OpenLineage/OpenLineage/tree/main/proxy) with Airflow. OpenLineage has various integrations that will enable Airflow to emit OpenLineage events when using [Airflow Integrations](https://openlineage.io/docs/integrations/airflow/). In this tutorial, you will be running a local instance of Airflow using Docker Compose and learning how to enable and setup OpenLineage to emit data lineage events. The tutorial will use two backends to check the data lineage, 1) the Proxy, and 2) [Marquez](https://marquezproject.ai/). + +## Table of Contents +- Setting up a Local Airflow Environment using Docker Compose +- Setting up Marquez +- Running Everything +- Accessing the Airflow UI +- Running an Example DAG + +## Setting up a Local Airflow Environment using Docker Compose + +Airflow has a convenient way to set up and run a fully functional environment using [Docker Compose](https://docs.docker.com/compose/). The following are therefore required to be installed before we begin this tutorial. + +### Prerequisites + +- Docker 20.10.0+ +- Docker Desktop +- Docker Compose +- Java 11 + +:::info +If you are using MacOS Monterey (MacOS 12), port 5000 will have to be released by [disabling the AirPlay Receiver](https://developer.apple.com/forums/thread/682332). Also, port 3000 will need to be free if access to the Marquez Web UI is desired. +::: + +Use the following [instructions](https://airflow.apache.org/docs/apache-airflow/stable/start/docker.html) to set up and run Airflow using Docker Compose. + +First, let's start out by creating a new directory that will contain all of our work. + +``` +mkdir ~/airflow-ol && +cd ~/airflow-ol +``` + +Then, let's download the Docker Compose file that we'll be running in it. + +``` +curl -LfO 'https://airflow.apache.org/docs/apache-airflow/2.3.3/docker-compose.yaml' +``` + +This will allow a new environment variable `OPENLINEAGE_URL` to be passed to the Docker containers, which is needed for OpenLineage to work. + +Then, let's create the following directories that will be mounted and used by the Docker Compose that will start Airflow. + +``` +mkdir dags && +mkdir logs && +mkdir plugins +``` + +Also, create a file `.env` that will contain an environment variable that is going to be used by Airflow to install additional Python packages that are needed. In this tutorial, the `openlineage-airflow` package will be installed. + +``` +echo "_PIP_ADDITIONAL_REQUIREMENTS=openlineage-airflow" > .env +``` + +You also need to let OpenLineage know where to send lineage data. + +``` +echo "OPENLINEAGE_URL=http://host.docker.internal:4433" >> .env +``` + +The reason why we are setting the backend to `host.docker.internal` is that we are going to be running the OpenLineage Proxy outside Airflow's Docker environment on the host machine itself. Port 4433 is where the proxy will be listening for lineage data. + +## Setting up OpenLineage Proxy as Receiving End + +The OpenLineage Proxy is a simple tool that you can easily set up and run to receive OpenLineage data. The proxy does not do anything other than display what it receives. Optionally, it can also forward data to any OpenLineage-compatible backend via HTTP. + +Let's download the proxy code from git and build it: + +``` +cd ~ && +git clone https://github.com/OpenLineage/OpenLineage.git && +cd OpenLineage/proxy/backend && +./gradlew build +``` + +Now, copy `proxy.dev.yml` and edit its content as the following, and save it as `proxy.yml`. + +```yaml +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +server: + applicationConnectors: + - type: http + port: ${OPENLINEAGE_PROXY_PORT:-4433} + adminConnectors: + - type: http + port: ${OPENLINEAGE_PROXY_ADMIN_PORT:-4434} + +logging: + level: ${LOG_LEVEL:-INFO} + appenders: + - type: console + +proxy: + source: openLineageProxyBackend + streams: + - type: Console + - type: Http + url: http://localhost:5000/api/v1/lineage +``` + +## Setting up Marquez + +The last piece of the setup is the Marquez backend. Using Marquez's [quickstart document](https://github.com/MarquezProject/marquez/blob/main/docs/quickstart.md), set up the Marquez environment. + +``` +cd ~ && +git clone https://github.com/MarquezProject/marquez.git +``` + +In marquez/docker-compose.dev.yml, change the ports for pghero to free up port 8080 for Airflow: + +``` +version: "3.7" +services: + api: + build: . + + seed_marquez: + build: . + + pghero: + image: ankane/pghero + container_name: pghero + ports: + - "8888:8888" + environment: + DATABASE_URL: postgres://postgres:password@db:5432 +``` + +## Running Everything + +### Running Marquez + +Start Docker Desktop, then: + +``` +cd ~/marquez && +./docker/up.sh +``` + +### Running OpenLineage proxy + +``` +cd ~/OpenLineage/proxy/backend && +./gradlew runShadow +``` + +### Running Airflow + +``` +cd ~/airflow-ol +docker-compose up +``` + +![airflow_dev_setup](./airflow_dev_setup.png) + +At this point, Apache Airflow should be running and able to send lineage data to the OpenLineage Proxy, with the OpenLineage Proxy forwarding the data to Marquez. Consequently, we can both inspect data payloads and see lineage data in graph form. + +## Accessing the Airflow UI + +With everything up and running, we can now login to Airflow's UI by opening up a browser and accessing `http://localhost:8080`. + +Initial ID and password to login would be `airflow/airflow`. + +## Running an Example DAG + +When you log into Airflow UI, you will notice that there are several example DAGs already populated when it started up. We can start running some of them to see the OpenLineage events they generate. + +### Running Bash Operator + +In the DAGs page, locate the `example_bash_operator`. + +![airflow_trigger_dag](./airflow_trigger_dag.png) + +Clicke the ► button at the right, which will show up a popup. Select `Trigger DAG` to trigger and run the DAG manually. + +You should see DAG running, and eventually completing. + +### Check the OpenLineage events +Once everything is finished, you should be able to see a number of JSON data payloads output in OpenLineage proxy's console. + +```json +INFO [2022-08-16 21:39:41,411] io.openlineage.proxy.api.models.ConsoleLineageStream: { + "eventTime" : "2022-08-16T21:39:40.854926Z", + "eventType" : "START", + "inputs" : [ ], + "job" : { + "facets" : { }, + "name" : "example_bash_operator.runme_2", + "namespace" : "default" + }, + "outputs" : [ ], + "producer" : "https://github.com/OpenLineage/OpenLineage/tree/0.12.0/integration/airflow", + "run" : { + "facets" : { + "airflow_runArgs" : { + "_producer" : "https://github.com/OpenLineage/OpenLineage/tree/0.12.0/integration/airflow", + "_schemaURL" : "https://raw.githubusercontent.com/OpenLineage/OpenLineage/main/spec/OpenLineage.json#/definitions/BaseFacet", + "externalTrigger" : true + }, + "airflow_version" : { + "_producer" : "https://github.com/OpenLineage/OpenLineage/tree/0.12.0/integration/airflow", + "_schemaURL" : "https://raw.githubusercontent.com/OpenLineage/OpenLineage/main/spec/OpenLineage.json#/definitions/BaseFacet", + "airflowVersion" : "2.3.3", + "openlineageAirflowVersion" : "0.12.0", + "operator" : "airflow.operators.bash.BashOperator", + "taskInfo" : "{'_BaseOperator__init_kwargs': {'task_id': 'runme_2', 'params': <***.models.param.ParamsDict object at 0xffff7467b610>, 'bash_command': 'echo \"example_bash_operator__runme_2__20220816\" && sleep 1'}, '_BaseOperator__from_mapped': False, 'task_id': 'runme_2', 'task_group': , 'owner': '***', 'email': None, 'email_on_retry': True, 'email_on_failure': True, 'execution_timeout': None, 'on_execute_callback': None, 'on_failure_callback': None, 'on_success_callback': None, 'on_retry_callback': None, '_pre_execute_hook': None, '_post_execute_hook': None, 'executor_config': {}, 'run_as_user': None, 'retries': 0, 'queue': 'default', 'pool': 'default_pool', 'pool_slots': 1, 'sla': None, 'trigger_rule': , 'depends_on_past': False, 'ignore_first_depends_on_past': True, 'wait_for_downstream': False, 'retry_delay': datetime.timedelta(seconds=300), 'retry_exponential_backoff': False, 'max_retry_delay': None, 'params': <***.models.param.ParamsDict object at 0xffff7467b4d0>, 'priority_weight': 1, 'weight_rule': , 'resources': None, 'max_active_tis_per_dag': None, 'do_xcom_push': True, 'doc_md': None, 'doc_json': None, 'doc_yaml': None, 'doc_rst': None, 'doc': None, 'upstream_task_ids': set(), 'downstream_task_ids': {'run_after_loop'}, 'start_date': DateTime(2021, 1, 1, 0, 0, 0, tzinfo=Timezone('UTC')), 'end_date': None, '_dag': , '_log': , 'inlets': [], 'outlets': [], '_inlets': [], '_outlets': [], '_BaseOperator__instantiated': True, 'bash_command': 'echo \"example_bash_operator__runme_2__20220816\" && sleep 1', 'env': None, 'output_encoding': 'utf-8', 'skip_exit_code': 99, 'cwd': None, 'append_env': False}" + }, + "nominalTime" : { + "_producer" : "https://github.com/OpenLineage/OpenLineage/tree/0.12.0/integration/airflow", + "_schemaURL" : "https://raw.githubusercontent.com/OpenLineage/OpenLineage/main/spec/OpenLineage.json#/definitions/NominalTimeRunFacet", + "nominalStartTime" : "2022-08-16T21:39:38.005668Z" + }, + "parentRun" : { + "_producer" : "https://github.com/OpenLineage/OpenLineage/tree/0.12.0/integration/airflow", + "_schemaURL" : "https://raw.githubusercontent.com/OpenLineage/OpenLineage/main/spec/OpenLineage.json#/definitions/ParentRunFacet", + "job" : { + "name" : "example_bash_operator", + "namespace" : "default" + }, + "run" : { + "runId" : "39ad10d1-72d9-3fe9-b2a4-860c651b98b7" + } + } + }, + "runId" : "313b4e71-9cde-4c83-b641-dd6773bf114b" + } +} +``` + +### Check Marquez + +You can also open up the browser and visit `http://localhost:3000` to access Marquez UI, and take a look at the OpenLineage events originating from Airflow. + +![marquez_bash_jobs](./marquez_bash_jobs.png) + +### Running other DAGs + +Due to the length of this tutorial, we are not going to be running additional example DAGs, but you can try running them and it would be interesting to see how each of them are going to be emitting OpenLineage events. Please try running other examples like `example_python_operator` which will also emit OpenLineage events. + +Normally, DataLineage will be much more complete and useful if a DAG run involves certain `datasets` that either get used or created during the runtime of it. When you run those DAGs, you will be able to see the connection between different DAGs and Tasks touching the same dataset that will eventually turn into Data Lineage graph that may look something like this: + +![marquez_graph](https://marquezproject.ai/images/screenshot.png) + +Currently, these are the Airflow operators that have extractors that can extract and emit OpenLineage events. + +- PostgresOperator +- MySqlOperator +- BigQueryOperator +- SnowflakeOperator +- GreatExpectationsOperator +- PythonOperator + +See additional [Apache Examples](https://github.com/MarquezProject/marquez/tree/main/examples/airflow) for DAGs that you can run in Airflow for OpenLineage. + +## Troubleshooting + +- You might not see any data going through the proxy or via Marquez. In that case, please check the task log of Airflow and see if you see the following message: `[2022-08-16, 21:23:19 UTC] {factory.py:122} ERROR - Did not find openlineage.yml and OPENLINEAGE_URL is not set`. In that case, it means that the environment variable `OPENLINEAGE_URL` was not set properly, thus OpenLineage was not able to emit any events. Please make sure to follow instructions in setting up the proper environment variable when setting up the Airflow via docker compose. +- Sometimes, Marquez would not respond and fail to receive any data via its API port 5000. You should be able to notice that if you start receiving response code 500 from Marquez or the Marquez UI hangs. In that case, simply stop and restart Marquez. + +## Conclusion + +In this short tutorial, we have learned how to setup and run a simple Apache Airflow environment that can emit OpenLineage events during its DAG run. We have also monitored and received the lineage events using combination of OpenLineage proxy and Marquez. We hope this tutorial was helpful in understanding how Airflow could be setup with OpenLineage and how you can easily monitor its data and end result using proxy and Marquez. diff --git a/versioned_docs/version-1.24.1/guides/airflow_trigger_dag.png b/versioned_docs/version-1.24.1/guides/airflow_trigger_dag.png new file mode 100644 index 0000000000000000000000000000000000000000..be04118e37aba9f8b7ff80ab2639bf68a782c501 GIT binary patch literal 10652 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 literal 0 HcmV?d00001 diff --git a/versioned_docs/version-1.24.1/guides/backfill.png b/versioned_docs/version-1.24.1/guides/backfill.png new file mode 100644 index 0000000000000000000000000000000000000000..cdd3ff47f92c84fb8f433deaacc18fbbd415ceba GIT binary patch literal 5217 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 SGW6PBxVf3dl_Ha0e)}(3vsqOD literal 0 HcmV?d00001 diff --git a/versioned_docs/version-1.24.1/guides/dbt.md b/versioned_docs/version-1.24.1/guides/dbt.md new file mode 100644 index 0000000..dec8896 --- /dev/null +++ b/versioned_docs/version-1.24.1/guides/dbt.md @@ -0,0 +1,128 @@ +--- +sidebar_position: 4 +--- + +# Using Marquez with dbt + +#### Adapted from a [blog post](https://openlineage.io/blog/dbt-with-marquez/) by Ross Turk + +:::caution +This guide was developed using an **earlier version** of this integration and may require modification. +::: + +Each time it runs, dbt generates a trove of metadata about datasets and the work it performs with them. This tutorial covers the harvesting and effective use of this metadata. For data, the tutorial makes use of the Stackoverflow public data set in BigQuery. The end-product will be two tables of data about trends in Stackoverflow discussions of ELT. + +### Prerequisites + +- dbt +- Docker Desktop +- git +- Google Cloud Service account +- Google Cloud Service account JSON key file + +Note: your Google Cloud account should have access to BigQuery and read/write access to your GCS bucket. Giving your key file an easy-to-remember name (bq-dbt-demo.json) is recommended. Finally, if using macOS Monterey (macOS 12), you will need to release port 5000 by [disabling the AirPlay Receiver](https://developer.apple.com/forums/thread/682332). + +### Instructions + +First, run through this excellent [dbt tutorial](https://docs.getdbt.com/tutorial/setting-up). It explains how to create a BigQuery project, provision a service account, download a JSON key, and set up a local dbt environment. The rest of this example assumes the existence of a BigQuery project where models can be run, as well as proper configuration of dbt to connect to the project. + +Next, start a local Marquez instance to store lineage metadata. Make sure Docker is running, and then clone the Marquez repository: + +``` +git clone https://github.com/MarquezProject/marquez.git && cd marquez +./docker/up.sh +``` + +Check to make sure Marquez is up by visiting http://localhost:3000. The page should display an empty Marquez instance and a message saying there is no data. Also, it should be possible to see the server output from requests in the terminal window where Marquez is running. This window should remain open. + +Now, in a new terminal window/pane, clone the following GitHub project, which contains some database models: + +``` +git clone https://github.com/rossturk/stackostudy.git && cd stackostudy +``` + +Now it is time to install dbt and its integration with OpenLineage. Doing this in a Python virtual environment is recommended. To create one and install necessary packages, run the following commands: + +``` +python -m venv virtualenv +source virtualenv/bin/activate +pip install dbt dbt-openlineage +``` + +Keep in mind that dbt learns how to connect to a BigQuery project by looking for a matching profile in `~/.dbt/profiles.yml`. Create or edit this file so it contains a section with the project's BigQuery connection details. Also, point to the location of the JSON key for the service account. Consult [this section](https://docs.getdbt.com/tutorial/create-a-project-dbt-cli#connect-to-bigquery) in the dbt documentation for more help with dbt profiles. At this point, profiles.yml should look something like this: + +``` +stackostudy: + target: dev + outputs: + dev: + type: bigquery + method: service-account + keyfile: /Users/rturk/.dbt/dbt-example.json + project: dbt-example + dataset: stackostudy + threads: 1 + timeout_seconds: 300 + location: US + priority: interactive +``` + +The `dbt debug` command checks to see that everything has been configured correctly. Running it now should produce output like the following: + +``` +% dbt debug +Running with dbt=0.20.1 +dbt version: 0.20.1 +python version: 3.8.12 +python path: /opt/homebrew/Cellar/dbt/0.20.1_1/libexec/bin/python3 +os info: macOS-11.5.2-arm64-arm-64bit +Using profiles.yml file at /Users/rturk/.dbt/profiles.yml +Using dbt_project.yml file at /Users/rturk/projects/stackostudy/dbt_project.yml +​ +Configuration: + profiles.yml file [OK found and valid] + dbt_project.yml file [OK found and valid] +​ +Required dependencies: + - git [OK found] +​ +Connection: + method: service-account + database: stacko-study + schema: stackostudy + location: US + priority: interactive + timeout_seconds: 300 + maximum_bytes_billed: None + Connection test: OK connection ok +``` + +### Important Details + +Some important conventions should be followed when designing dbt models for use with OpenLineage. Following these conventions will help ensure that OpenLineage collects the most complete metadata possible. + +First, any datasets existing outside the dbt project should be defined in a schema YAML file inside the `models/` directory: + +``` +version: 2 +​ +sources: + - name: stackoverflow + database: bigquery-public-data + schema: stackoverflow + tables: + - name: posts_questions + - name: posts_answers + - name: users + - name: votes +``` + +This contains the name of the external dataset - in this case, bigquery-public-datasets - and lists the tables that are used by the models in this project. The name of the file does not matter, as long as it ends with .yml and is inside `models/`. Hardcoding dataset and table names into queries can result in incomplete data. + +When writing queries, be sure to use the `{{ ref() }}` and `{{ source() }}` jinja functions when referring to data sources. The `{{ ref() }}` function can be used to refer to tables within the same model, and the `{{ source() }}` function refers to tables we have defined in schema.yml. That way, dbt will properly keep track of the relationships between datasets. For example, to select from both an external dataset and one in this model: + +``` +select * from {{ source('stackoverflow', 'posts_answers') }} +where parent_id in (select id from {{ ref('filtered_questions') }} ) +``` + diff --git a/versioned_docs/version-1.24.1/guides/docs/astro-current-lineage-view-job.png b/versioned_docs/version-1.24.1/guides/docs/astro-current-lineage-view-job.png new file mode 100644 index 0000000000000000000000000000000000000000..dd54df6985d0871ba7b9738d1072126c813b72d6 GIT binary patch literal 41094 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%0AXrnX4Fdf{-(0SFu~T1f!A{z^FR)W1Cg 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 literal 0 HcmV?d00001 diff --git a/versioned_docs/version-1.24.1/guides/docs/astro-job-failure.png b/versioned_docs/version-1.24.1/guides/docs/astro-job-failure.png new file mode 100644 index 0000000000000000000000000000000000000000..f175a7c322e3fbb5b65dacc3a22fe05423c02891 GIT binary patch literal 74806 zcmeFZWl&w)(l&}~0wg5CEjU4fySoK<3&DcByCj6*?(Xgm3kbn2I0Sdsg~Nh7$=>HZ z=bm%8b*sJ~-=CMNRm`=9_3Y7e%+dWkJ%Z#vh(AZcMS+5XdM+s;q6h^AFAoI;?TLf{ z{IUuwTn&8DF%=e;mlPHzmbbGuHnlKX;!z*_a{Y869LlbbWI5nV@A@2{=?wC~iSP3)-Km@^z!{7yF7NCwvF4 zIZ_(!w_pes5VqoAGA!IbI2mi|Xy_<)j(iiy#O;dc&`z5=cm2MsH5cw395InBIcvUF zy2Mxe6|!rjcer8Gddj}!^cH^HD2GTHxtjnTsVnHbsE7RM1v(eYs}s=rr}myGFmyUQ zQ}FDw6IR=p*btZ#SX-W@RV=Lri-U@Cob|KTyw(~4+-%$qT8Dz(NHYn26oiAV2alr2 zkqnqH9gZ2H7vwGu+_Gqa@X;=4Y}hZqVVY0K2`e66U*0F_t{_Xq?G&Em)f2$edwg6j z*$L$xQw#HXmx>p5Qau?_-jFOwx15Ii%aQo!9ur0y)ULBo%XC0NI#lYV!}J4OjH5y5 zOkSE6pl?+pbxC7cStuId8VL$I&=d*|xPk^gxWESr3O4F16e95dCGZi+fcZx$ynF`i zKdzxYA1ewf2}?=>|CJ2vjEt=8KU+H(&{cl~x|%jsR(DXBmEkh5wxriLwEkp7?_z25 z*aV8lg$uZ}G;+`UG0_1v z=f|5&h#1)$*qPcmm|9yAKlZEt$=cC@_wC!qf&S<3FFB1|O#eBO zmHpqh1>7LRV+jKz{dQ)3_fNKMxHF*c;giTU!ESI`I8-YW{BguZ4d%Ld0KXrYt7ohIa zk~&#Ega-*}&Lea=-9o8!ngEB3qE}0NP6lfGl23tw5OF| z^R^wT2opOj?@1vaRRH_HD)>KAfkzGWM1exK*RdSKr=Q)BZfUv|34w;~x9( z^{!-c)J>_BnM%uUe%Dixum^BCzP!=M9hkxOe7APU0X_WlSkd*g;?cnGsQ3CX$XN6# z^WMh-Y!>shu!!iB12u`h*8k;M`D2g1@84kzzcVeW&otV@sNktEPu5K>s@?4$)@dG6 zDOSym3L)T>`4M=jVR|u?%s!TqrLJCrCr}&#VK?KZZGeo zdEVw)Q+(@nW?D#Gb4(PFJO>g!$x z6&f{`Eo$Wq9~>T?Mz_)!8a<7wjbX|It~=t9bpCi3+cl|XYt6)K&Zh;j^p&3sSi*6v zrU)g=N>0{paFI0g(9qLuamlPEMGyo1%?pDO8f)iyJar+oa?B-e?QXOW|?U z4DZ>iBjASb7>}Wjl0Hn~R93pzaMR2ZK^}4q48^At4zsqh1Rzi_<5WLae&19A1E!wsH6n^SR!L`|N`+uy`|5yo$Wl#fdpv-==m=2;Z-<&6JRyZzq zhhDCY=Sr`U`e;^qaCW4#W?p;yQw*)&LvE)=$BN~=H7f0D&ki8fhJ7&#?C0Y45AW3O zqlbCDqW(N9TX;_`yTtn_0XGzPTMXJP=WE@e254G{C2I`Y4Th;XfePbi<+JwZOS`pu z>nCfJQFP{SW8huo81Uv=Csqzdg~bIeMcPA~7iG|l<^48rUq8uyN-=l8HqPd$3- zMdACN24fet0EeqdHw;1k5|nZYZs&tI>$W|r>+dlUI?b2cwz7EM3{_ zdU7$N`xV9yr$umj-&uuqLM0u^rQPuJqIu?T4n{5*b1gmj%F$OM7J)4wXfuCTTcj2( z67+Jn%~%%KY(qSpaG(*4C1cC;6PemPZjj0CCk6zHswMmdZ__g(9{JPt{-AoM+oS87 z$$Pz=Z;?L%V}2l)Oi{<3Dlfie69tW%3@6O0mFX4-@{c5o1#G+eciO2h1n?|{mT6_s! zWYmGERt|OjLCD1Y`ZRZ5WdSkcnE_|@<{jM<}t*k-uDiUJY_`k#1^OlpPwuL%9=8%%8`T{T9-@VAx9_VJ5$2< z9Xg|FcRih;?(om%Qx>v+2taOGKbx(#yDYo(FX5Z0Qm6lKyR*mV9^(d1h{p%_MxsIN z=?zE=ywDkm;vL3QDYfH5?Jyf8Sw(=q$0nHN&_fu6wF*!uD0Jp7_qZz?LradVHlx;i)B> zga(lH+o}D^lcIip^AU=b#hXi;{mCUzV({Gy|<&z6uG74=fJqqk1wcL76a>ke?K*XB+Hv` z1Yc6fV7wBo4Egxx8v%FRa(EC-dX#`o`c_~7UHCxQq%e;U*JlB}Mz@uk!34HhoOklMB(mlo6C4Vh_QubGUm294bY6Bvg~gYVOfn4eqQ8IBl#I9l95w7>D;YaKkH zn!cKAv5HL${L3T4Xn~nyD;e!s1741EwAe?sDP;Mjne3|%AA?d)k5)XHJo`niSHUf8dld#?H!%BVe`9o&bB}R{wSEdmrRC}M zg_en-#cWBT#ax3b+TkpH;KgA?>m0lEP84}a-%EBYe0z=VqofnfLLpaXB1EBdfwC0N zGm}g62R=U4!=I6mDwA6Zdyk=A6-&OY@gDSn?_J5*6P^h&N zwZ}(bG8)Y23CHK^#V3l`Q!y}B3va#W+|(NQ$(F|DC80{EvwfU`w70VF0kcKZZ96*p z&T24@K}&OM=SoM*Ao|QaT1*eQEIOQMzW9NyOoJp8kFBB)Rx8H+k z6W;9=3_Dji=QgU4=_aBV%`VuWV@*UIImvAkd{l7BRZ8a4v#q)&CB zRYu3$p0Q8$cakRE@KWdHcLn3Aofa-{OdW8C^xaG*Fcf%`ayj39un~0H==Wyw8haIl z#Zab9tEM`ZD@*$2dwkqep3vTm5+ zbbjk+r>rq3*jp5Qsz(c6`XOp2iZ|Th;M7j>Fp04o$(+xTKbRcHTnbe#-?gG+8|iyD zI3J}M4n=8ztj6Sbr%UN%lj`H1C$r&o?WmdDjSMYoU&}%Nsb8irx9)2)+ z+#YnucH$`IOVoT;FuLxawAq-=xgkHOztbTF5vo-v9WYBUsa$clR##sKYN0+pmvHaT1d(ium&}zC& zXT0a`?H82(naIvFTJRfMCX+6oYH(1S@dztyG7=xjN&@8KK#TWoy$=&&)~3s0B51R= zS*ms8A+CIZJ6Vim718Q;E@gbbqZ8DZfZmZr)a)Edzu-N#v7&c%yx69-iG(KKjs?Be zye=Il;5ia{>KP2*XqR@h%V)HJW-#k@Fk)8EKH^#eHkhI6#16kK5Mi?T1x2j`s%lZb z%^kix^cd|mdBBb7F*4bTygXWBA0f>a4W`hWD$1O;?jGbn-&HTys~`Y*Qe5m2;U57@ zve`l}sO>B!G`Su{K9!v1s5kmuev<$P4UY1``1g&0{*25{PeX6OYYO16BhA-<&l$g46h}+{`{Kacn;9Jod%^uas~(;b zu|PKAD0qZiAuHgx2``bEip2RotT+H!V?h2rDce5=X%8yu)K89k0w<*VFgl zl}zpv=dm1+Ond0#u zxO|wlMwZC+R#wFn(DaIxi>Mmf+iXsv))hL`Ci>f-f0?!4+TkBOlUitK=VNral9;XY z%<-_UbP$_JI?`-@? zDz~-$oksJgAj9Dpg{orJux>^fhKckC?M7Wk<(%RkU2!lMUSM*5_X$27TAplLhX0Ex zs3PkvOjv~Htii*{l=T-Kjeai#SSd9TZ1~tR7+`YCbG37K?XLS@^E#eRm{z&ZQC!#R zSp)I1ARf1~8K(Gcye{x2!?T!HSzixf=wJbP&yl|@kto8mf99Fmg$ZeSartM-Ut%i6 z_?*Tm($#PqwzIRYWL7QM(`1ZU;?q4Pp0^jtYx`;w^&>y|tZiD*PbluX#olTX@$2&J zoExwk#B@&6ylyqeyDL1ko^8^Z-j__K2n}y>pAg;4>=cKiyew2HCCr&B>ZANHY%3le z^v4n4L-XAlNgufT609OSB&1mE#;T`=%W53abU&j+$m2m(;Q4h8{XlB9+Syn!4a)NqS)~(=GC8c z(!(Q`e)(~tw#S$+-*1d?i*&a} z!D;1|{~>nFG)RNVWX!b!omkxmfJQ=rc=Ol~AV_@_jS!0GQ4MnF#JfMSQtB5F;&_n59vn+IxRHgBr6H;By*SqOmXufoacDw}%g|Z4CzZiPJkmqsR zZ?IAf!8I*N+@yj(xBeNze?K-f^(zO*(y){l4l=$WtT+4VOyi=`cA z6Gt{++H7ot9aeLkhm;^<5aCee`Po`Ib;>qc?*R$KQ; z9nYn)u+-*rLvy{>`-S+F*zh9|=l56eR z^wMhxuGi^V;@z*@W~)SY!;jwiLl31JaFe#21;eD3R=_$x<%nLkB9AE``aFebVnJ+z z1(zoy{XXO1MHIPg(e3ZwttRDGS+$=g%@*?UZv-7;G?yvWg_bII6FUe&Jh{mcv^$AIqz-UbcoNLz|TN8YSlpU}awRJb2 z%HEytekN_TsN>4qL9pX^eFLpa3u4Ab-Na!*fzXp>-Qg#8vnZ{^y7K~u6_x1T)wbz>Qq__*t&hPB}6fRG(V;^>&Wt4?qaBP`)L~9+&E)oO4)+NWP zlcH%Z+$S#d;AGEjalgvwcMv~vnVu&g@AbH_UT^X66Q>90-P#NEi(q{y z;0#9;&dkbsM@S2EhQr{h{9?ds@Mf`}j z;eJ6-2o-%O!>niP7Q{QY%bz0;Dcg+GO2ts!cz&reTF=+@^f=pjJ<;|82(OPq%TIVg zK=$m{xk~~ISlEP%zpjdJ#;lh=w(?yC4$rqeWEQu$-ioohH|HhO;z7PNo@zNOpW_4? zF8#!jYZSFqJtGJ8D1wgxG^t4=CoSlK4+VNnXyRV7aGQa~Y@)z!XUvFbuF_?PNd@fY z&*OEfKKYX`+l(dsB(ld#1jKNd>NV+0>K%QQW)4rpDYRjRwASX0r^8c5aeQ6{j2e<%g0`ab9vFb6+ww{ zituSV<_eM36OiJ&MvLU z*07E7$3srK&C5ZsIfg->ii{N1R2qM6HD*VmmkT;-qZNTAN}{dPk@FCpQCL~!L!T3I z>t}gM(Hv&YQfdceAq%CbSLU>E33d~uWqn&Oc|-H|a9a=2w8*W9IEkIb(H3>WI zopRirAg8FX$DR-fEwv#rVHf(jz1I|RBz0Z#_3x$vpC3mW+_-;9$}fYHI}zF0luh2Y zFC5aU-?4*fVn}@V;v4jY-vJOD=*uHK^-EqgS#&hj*CV@lk)u|wm$>Ec67}vSA%2et zGzy$Hal-|J!>BJJRh{WIsBR~ZPD^E)CEuaAqsDX`&VzI!r9rI43DQ(^G@~)CdQ{lN zT3Ls{7?#<6fs4w#s6}-5S%z8Hvsst*^y*@Fdj>DU;NDUN^%Z+eeo?#WsiEZg$#|2t zMX+~yYAKi-m(OjV2m)33yS8W#{Ejp{K0kk=R7Z*7Xq)jUxuu(B?R9L-FLn>z$y&wr z-pJ5Vk6eKaIKH2k^P?!hQm{07=M@Sz_ht)|>}EvSSZP6Cz#=}FI|8?0tl84fW}8@h z(wjO!e?0*v0Y6^&lxJ*|4gQ>?K7;;!#YScwjM*Wr9?Qt)@GG;~Wtdm2WJOa&=JW_y z-M7wGuUSU%d9D077qJD}U)9Rv0oVmhK^tCnDri+u$>md3q*c*2Us_TxpfLbJAz|>b z((oc+(sqMPEEpTn#JwxN#U)lX%l@+JiwX$pR)J=)@U zx|rMnH7Nij$x)R(3e>ffA9|%DS$01~B0rydEBENJB=T>`O`@;cNk(y0#!#t>O!H}! zH8oV`)fAyO`0n;KOa=Vrb-7_w+I}Sf9-j3cnU;%KYUplGAA!@=RjhJRAi!3y_$=w8 zia$izR-`75NPXfdJS_=$q+^~xv)g?RrNdMygaVHFK+YWDS^x?x>okE8yi2GunKoQ{ zThikdhSt6 zp0wS!9gm4#()k?E0ng{28@%36?Sjj@X*)62MKwKpUc|UCTCCTz*p3fIL?9`K%l?{Wn}PVrlvYxqeY z5yT1GlG0@y-o%N{`LM!doLuSG)9hb=?JtfpV}zWJ3Ki!47MG5v)eo_|!hO}Vk--!G zQ|jg-kz@WFIuFwXynJQr=R-z~^I0QLpXe7F^+(uvL-i3v{B;GY2L*+QH`*QP?+R0P zg-4QpsiDFasJ=jZ+&Lg=K;Q9Yq_b$BVHfr{rGlTd z{t0+(jwc6mbuZ4$zX#k$0Zv$En!`OmWU<^Euq2%(4~@%eTxp#W7Wt0%JjAfbZ9)8n zpik4*GdW9m4>r{=7Le32%|J{(X0MSwJNYjU^KZ*am5TFN%*Q0kmjTCYqer*({P~7Y z38Ps}R^#o7x7@a-H24j@YV8}e1W|ZnJtkCFcAt;=kV~{^z-KukofYO&km)_R7bJz^mq1r`_veKFcpju+jVaV$NSc zdsb@lOmy0zNgRN=`Cn)&$(W&>z7Z(?o`WZ$_bp*fF2K<<oW63Y37wgBv0aQ^pWo@ox;q#l+|l^ zs$*&tk>EEf^;rTB9weg+Ny%Dpl94=Lv_W>F4{=|=jw~B+ZuY3L!q_ev97Hp+T-g#( z9cRJ`0n&SE*$m1=5c?K2dh0H^RHYNXIugEVz<)J&Ow#`m>Rh;>O6EyiM+PaNDNy1I zvWgYlzenQ#0WV`vzyUB7CJ`yS-%~i%6$XI)cp<68Nj{1FAOoOV=g*$r(0{NE{tXI& zg69hWkSrphSR=*%DEd1DuP+23S?^C6?MR_l1jS`>4NIN4xY$$C*xeY8)gA==zVEXixRw3x%vK zmnPFsCPg*7`ZMlIA#0n-iqD-Q@Nhm>7oixi5yqAD_=oM72bdRIASNa{8+(m73UxG_JL+%L13mw~Ce88j`78u@*~}(#9hY ztzm9clq~=$qX@yF2B=H%kp|t3HGHF4qOliCb&-$cigk%dLx4-cWOv5ldbJ(N=^cRd zB4;taHb;H*?dl<+D4W&qx88$Ebm4@&Y~TjP4=oM08-ZvCWJ-Aw7+uiWE`2Kl!K^Xp3hCuO>#=T zAsV>JJrZbixUM49d+*I>I$r?_A!JuTBjEcKjRhuM$|4^)yHX_ozGt7-(J3~w-ieo@ zceeezujk5JE+vYjQ+)R%;bA~?^86UHmhKiEKPGi|=K3fons0OM+wzN#&y|DiTl{9b ziY@pCu+jcrHT~p13M}d6*!Q4u%`kgRs0U&2wb1HtsEy@GVtTymApe5v+e8z=VLM3G z=&)1ujEGmvYQBYhJYOaTKqPL>3Fhid$WKfc(cm3&DV_XsF{9?j~z3X0yS+s!{NU&@yn#-APH zQK3ZUWE@)Z z4@4hQ`8>A$j#@3R25@`E@lBq6ymv4i$F)9xo(Xf!$G)V6XtP%5*JNthR>JFk39zMw zsk57WL4pf1faBEgibh=^jxHtN3ZtGKY(wk+q15 zKKz4jO(G$ys8CQWZ)=MuL~|O=)9u>R`^}+b>rY-=kH%^+5K7TH`}~q!?@c4fIKF@e z#?9j{t8x7ztaCN(J?Q6fvO=0(8>zDsLG1KMi}~B1{gJvn(wmVIwx9YJ7J4=glG*L- zJ9VpNN`&{dan{erx6Cxe*Sk^?H(5qrx=y&IPVBwl6-H@f^7e1>JpY|C{P%*=AaLVg z3eT!U$nW~Lc)CPMFekaG;>Ru-OzrZN^}NNKu;xZryR9+kBp{eAO{OwXYS(q@C(tYV z+CwwjkLjThZ8J2W-SBLiu*hkVnp&Zxfb2tx#Iy_d{YaaeE}ZpC3W*G}wS$S;jgaf( z@2Gq!XRl}@NTjR z6(Z6QtCVYMOnbGv-;oGZ0?bJ~!F@^tF|^n+UblYy*EJ%VAiG+W&oa^J?hdhNsZGDv z%K@@5ONriy@lti)^0Mr%a^d<)r}$W81)BbO|1+P1e!(z~{2sC`25|{?C!@+N6 z8V&j_T1l_;ZJiA+DmRw*OJiz?RtP4% z9ljbRT?hM#o;TpnR`;zJj^{diAN^js((O?}|7NP*RyL?r(MwD3SQO*;TW@9Zh#a(c zaa)xb32+<)5-{3fv+s7n6ZOx#TBtht(c^xw`q&a$>D2{_vruca6qt=NDeO)b(gB#+ zTaG}a&p%lGtBr7s78`7Z@2|}3ytsGjP5st3S~Qq90A}hUW2Dxhd$*A<&Q#y*zu%awQ#7`uWl~*@MC>rzb$ZSy!ne%)4<32>O zR+I+4m}RcZ**l9(M1(cvo`@ES4VJjE3hm+ziqEl96KA@xB42syf+-TRlj)z|i^u6j z8-#!48Hzfhm@XZsHz$?Tz&Pnf7QLU%C22Uq(Oaa1tD^cnFP7{8{W+Ox*hmNv68Qrs z3ZP7=%HGSP4okBx^(B#4)9UfaA#y6vCPCgtD7SppZ+!(M$|N#cRy8TzCZaiIsLt*h z1?P;aojZnNvEb=ex`5C!u#3OAj>_#As({NZb`%whTo^TSH>vZIevPDY>P$;?F06m? z9(g%|P?JZ}b}^0RW2woa21%iaq{i%#O4nV)`Znb;rN30SRof(~-mEK3M5$<16o;F{ z&FrZO;|g9^l!=k zn-hSHxtk1atNebLFIO^EY8po8s;n=O5dx5UEzN@TJ& zT}61-_5E{7^jMo$-vpQQ4%K9V>ir$EcoR0yi58p1Xw7^bj!t1Ig1j&E;p)r_H~VF^ zYTmF6ROcD)+KWUu{a#1D=|(f#E!6-?Okc5{l8jUc!k$%W)mu;`GI`~Nd#k5^Sn{S6 zM!ZmCH&pCzQ0O$;UcS_Mi46vy|MN*;&u^OPsr;FApTw*-Z5N*Hmm|@7a~2P9ysM30 zu-B%O%$Sooh*o{-gOSYjD>zx}isoc~pnSeN$w&c?1%d_sFh<%I8>@49h@v=R*Best zaSvs>m^CjSgE{rQFDQ^=7T%4=Lr- zDA3~pu_%4#vD`oD+>|BfDna;r07K{SR!#1bHc^dlZ&Acad5_Fmx5cB4ockxKF)Wo7sl-0Fnstyw+! zR$5vw)!vzvF^hHg#%Nx!?dIl#iT-TS;dF_u<~f*LKJruR<$f&^JrAe15lGi9Lbf#U zto(xcjSu3j;`>!!F-u!?CkF=c@{l*e3l?FgB}lm)iM7sacT&8pNYhyYb?cry_Fc?4 zC7)Zsjar^E@^zCDp3WNDT17~kv5b-@o-EJ|anE9Vd^_;y_pCOYSP;HOmEkaz>nYZ# zYxjqQ9RKoy1EbQ{#gs+fUY6mJBQBu;!5JXzK13A>^!*^027-|g5x6Sj;T$tD?!((R zta;VOePq&cbXXHCA|F8_vr><+aZm{;9&GZEX^oW8z1e^qJ?RW;8C0&tGQQ^=$RxbE z{0Z;t`H+D{uRGC!!on*4yc93JogYO83502YT#zjMQ&?hs~3diP>I7j!;aMtkE zs2~ix(H6B-K7-w);-u;64P2Hvz@2nFX0^|g8OxH@O1@VO^(X^nQFx3T>KM&_kL9We zzFzGKr{s9UAvJuVKOrQ3uv$mJ)t^|sg+El3bk-9?E*(D*;+&4tWQomgmSC}1r4o`C zz>&8ME*sCNq=(g^kx6_nb{To=n)&GlEOPvs)jF_%PgUn2cy0 zwo5H<U~Y$}62!e%+B{TndWKA4x+^5?&))^D$ff zj>=}<O~t@?vsLj^-P zbg*R>=vAZ*OrLto?LHr&Ef5GUe3hN>cMH>yT3ya3#t`a#ebz?)M4+!QiYkn)sYR&`v*+f;Sn*) z_EB~R-ob)bu;&b)zFtogHZnU;lhci^^WKT)Z5@~VcfOF&v+0yJM>WC%{ZPInTYuz* z?e_qLqpwB`YC=G=IJL$(;a!t{a}Fi7#-P*0;`aI%rN_z-_#s3Ql8Em~C)*&(3}omD zm}^kQwR8$qWO~;^v$r0@^k>WUt!IN6hA{Ws!OyC?+^_;DPF9pL2e#^uxM^`@PxN>_ zESL`_*YZzSr+6m=`0CJne#>}VA_&S6NqTY~9bA@mnaQ|c9|r}5pMp%kF)rSG-)IoE zk8jXxIcm8&*kiXdSRiE9f>Y^^Mx7qK#Q!U`s~we0l~qE)zgRiwld*oeGF^jfk+-;c z(n*gVlli8@f^+sLC0Sm!)6}}H!OwB#G<+Thkx#{#L}zN>`Cgaq>~qfHeni3`(eRIJ z_$DI64lS1ceOu^b5B*#c^L9QGs~!QlT3x>B+Sf60)*jtzD}R=orra{gO||r*u(&Q; zqBbbPH_Q7SavY7iXJx8PU(2~o;|_~{Aiw@5Aj^0gU^|mf$m>>;+@JM^Ea?zS+0*JR zxonikk(!I$Mc$CsM$^qbw{(MqKziWDKwKP-_uyD%MYN z7x@QJ(QJBi#)F!}YrlYY#+!0cOGO@z0g3IU!KAX{_5z4-^RHC@$g~1H8HsKFF$oT@ zd9@yf2}0v6C^+rerRRk{_k6fuy#^aWU64m%7(?182;Uk4*#*NsSfYW^XUTR#S@d00 z*MMpQgaglLh2lr$T2JnmT}mAEbYZC1r6M-bK93v@0eR$QS5*JN&|?Ms8*lHEyDx|J z1fKQT=aN7OVrijw@sPCb9qBLcUG{@EXYyiM!ZUw2fYfM=%AFkK0TzT8V)3~->z8#s z-!3eYO_E^G?uipq^bB_^}H3# z`bd#i2ojul4v8KKu`N&MiO!F2Nw&dV({}CR%Bb7DHkBUSe_CU6RJ6agL z>Hb&RslYOPSOL^azt_Mnff=!f#BT4*-Y149cZ%2I{%W}`_UDaJa=2mi}Z%n<@;|7 zFGs4QIX7F)84M1O^@81js#eeopUpBcAt*ZQ#rZLl_HwsZg!syJ4w42{UZR-H``l%0 z?`|)DN(vq@uv{*BFK1||N;-m9m!cP;(e}}iey{q9iZS`6x?H`Sny!a3lbmdOKUJ;1 zbNV5<)PVOGgBtE-DXRh_L(?+>yWEs?@BO@Hkic^XQW7MO+hGF1rK&On`B8o*vvSn} z#eNGm>ll-ktj(bB&j*Ut%Fmw@wOyYi)K+n!KW-AW@xnwX9L~aBP@WYar=2N9I`sG!`y_5w)Z?b zsw;RGYA1JKk#%d-aro`|+^ojrw$quwn|Y3o69hpep8dm~bnnQ=AlFjD8|hkv3?mjf(I(D;?OEnR>R6(bYYQ8$mZB zHx1gQe1UIlD{A4$DvW9re1KEP2QR7>^(z|zFM-5 z&e0g}c5`jWz-9I*AbuZ2`RVeivHnnrQDZE}?dIL<;ET8W0MA4-M(G?{g3 z06E+-^gRpMa=fT9M>=^b?;_q&!^;x=CRg~mmV;!3JnvP{P2e)kcs{vLAay3gLLp|4 zWdEy0I`d;?ix#~S!V5#VG1W3%QXFREU#uc820JhD(XqZ`-aTa~ zuVDpl_($ps@_7M)0aS)bhpDFWOed_DW{Pt7dpc;Rr0?DLrYwW<%v9F|gJpo_YvvV) z!YWM zwRDX!q->z1FM(*!hfnQ6d5d6sY#+c6OJ_OoWnf6|gYBK}cqHdC)7J0x7?AVRe%{=5 z6I^e__ql;bFSjFyv&n=XH#UF^rbB$XS#t*6e4i}30=dIx(oeci7-T$|uxi6*O+l7PFUvU}(?ZG3Og z*fy~B><=8V+yrITIAK1aoEJhw>e62$&VoLFeao*m1iFim>ce9f-nq~Av-uJEDkTN5;U_hw{Twn8D;uB&LW z2_bH@7M8GLqC(Ohr|f3vU~Z3+AR{5~=6TIjRSMI&_wHt=2t)vz1-4ux-xs|?@8&|S zwh^&+cO$qTM2oo7RxxgYUjPN?3Gn^;*IaZTxs_C z`=(-nX@)oQ`&vxYt(*x32Cs;jB zDyYnTCcRRx(qPI^;JWS)cdO#cwM(0Cu~{uDytaP}p9{osf;aaN=QE$dsf^|j^-$dg z;N|4@yG~D8jUT#0h-(1~3)0O)FyVqQ5vjsn(jzG;8Kzj7T_{(1Ai13^=EaP1;U~`X zkH4#Lj4Nwt=eN6$ynH>b4aeh3rzAIR7Uvt+2l?wt#m7wg3iH>lO!zHt!*moO18#hq zJhpkX198Z7LsA3x~NDRooDf#8%T?bR{lNZ>`W!{+U1spncncv5$KID0n|PC`cm6 z<7CW~S#xO$uC{(&Syq`8YE4V`L5AD$E`r5sO7YTYyU=V%TSbo1nHApHU0VkM{DlB| zqCsff^Gw_f?gN3P&W`|Ohf-ScAuC(IbO~AUkC?UfDdarR++Hm%(7S4=I_iT-j5<|Y zL)LshduQ$LaKkmRUyzC^qF0_AM$eSr4d=PLy6p`Tj$h zbL8Is&c`SIk|;5F?XP4>xOAUdbcqN0^N!BI`_wMIYX#Cl{tl&Agb4>H)BTM02^a#u zCSpJOS}zF$xhjWu@cg_O+O0(}_|TFrQ5L0cdhkHcM()!kNb9n;Dq+@;Dg;A3e|N%( zGK1&M%c>6!aaaiuUSg>!L|z0#uR(uAPF!^RXPd7o%d3qqTmg>Q$!R^1O><=eFpclZGaqTX&nVuB2AATOD%4?Q6?|H99O5lG} z{-2)O#mWCVZi8qN*WTzUkpO00G*t32;{Q3)j3DoioD`h-RNgTkAD};e&`5~+lPU%z zfi38O8|wN8JL5l&&LB#Eq){xHbhG}$?*GI1{3L-%_~^I!=}CJDmjh~qA2F}tKABeB zK?cmzdqI1~r>3dBhjRJiq?G9i?0s43#WxJr?_?$N@~a+^8dzNb&J~tpCzOU=QKTq=Qa=vgIs1p5~lY<$B)i@Y3yzH*N z+FGC?jW=QW0zU9>U4Divylc0&?!0x&vDH%-DdhrA|50yyzbI}olAlDNMzR9 zl8Utj6f2~nXZEJOm;fe+j78!%&tFh>kVu6Q0AumPx+5fwBv<6yOUXk54t<>46-3gm zAd)^14Fi@jExW%nNi98*m$~rt%XywGsk#>g8~rWkr*}7&uD3U`73CktxNvT4IHqu4<^R!4v8TZ4<7)IeZdDZI&tVUm4Pf2yuLKLVv(>{k{A1P z3_x)-kN}dXL0W*C=B76l^+`1NTeJJC*#^_#J4W-m#~hr&H7U-M)$Uj#u9|3>M5g|= zo^Yefv{okLJF>@2HH|PwV&lPtF~BWyOKiP;&O(_h6RG{X#*8FASB?_>kU!!)nGGPL zGf%Xt_ONR~n$am`mdTYULSg|ly}x@%YjDHP2Zl%rYH9Q_$q_gLqYz?Ug3sxs&46<2 zkQ_%x<_#L@8XA&ivs|QEqm+$PE7wgfj-oa|*!gvc2X1BjRX7)J2ZX8D==2`f2Dn5h zvowlgy{V-Q{j@Fi!>eWrv+if$UN}S#{CKccOdT z(vuyZ#sH|>fS;(e#c(x{l|aMm?hxr87*+rd58|8RciLBHD)1({1{`J_u1_^-Xed1~jz(>q9zOg;Fl9{~i|6XzP&IjoV`o8$tY- zL@^GXRkve*RfR3xNT&Ds*E~mL&M)X~hT%1m8>L)~E$=;pw6#{+P{+{QoU~y8wptr@x?p?7b(ckjK{^S-N0Bd?>|XQ}C95iCusZx(|168+}j5CAKh|Js63 zdDRvEr8m>6eE(|qV7jqhgULt3(~M&$JJHHEaRjUJkSyKY`QRU8l~t z`kh8E0p-T`N4>@_n+1os)(adN@Cdf~hTV=zaA{2XJsKK>Lt-|;(1qVVF-oWP7Aq>bT7XRzV5O#&veL%A@%#MlLccb23B z?#d*hTF%>JjqT~{Y8u|PFoGXf==Lssy)!Ao(4I5_4Pdc@Rcy{>=J!}qWt>N0c}M^c$3WC; zgB)77qd8R!g+}G74F9Uh-L6}qZ~RE&VB~!%o}i{%?;<%{& z;-{Bx!S|(YFxsWYFgi_+*#P8VV>W>?@DhL+!q&qiqp%G=><-h#Zw{ukd&iCzBsMh? z=NHS+)z+10H^LbmEafS)Lf97Oh09V~Xk)$!qVhgv-7zn9n1rGn77S=fG zP*=-;uPXbMFTTrD=s%$zx2Dj;U?;ZF*V8d==>yV+Xe0Di^P4sR5cM zxqFv&?vKp5B$%-UOT_B8V*z59A1v%gwGu7b@y9}`ENIXP&P>}Cp&PRXNL96d@s@?M zC5={FY53;HuJgq_b9%R9t&sQ5)wCj9Z0{$s1m1_fIBrABv;~sexaBzHLH(h~TMId70MKuKF>eRO3t9TU zSZ@(;I{2J?#c+BLc%WsPpN^L>vRzCrmRsz-S#0->j9B-bHk2aZ`dA#xndZ2@POj7F zn)g)oM|Cg}nXwAYEL0n7h#^sIC_cOxX(wgv?d?x7mVk~PoFGiYXDFn)3j@TbdP*n* z5Tx+YzaS53nHnZJc^&JDS`N0(MU^GGDb7rkYYAi8)8vJ1Q@I7>4~oy>{D>}2*v}x( z5zub+f9{$Hcfm$g&Ji+1#%3)T#DC_oUt@wa+EGG0jxC~QcuTtNSB8YTIcZB_^ri6@ zU_5^~+<(sN9tjYa7`>qHsAz7*$5}(vp5?lkr^MROnW^lS=ZTHJX9`rm?qNxb;zu++$;U+5Yt<~OI!humFnu%w zqvWhy!gcsdhPdl=_9dTaBc|rHu+O!ozl|;B!2Z(v4%X?jM+iQ8xVFH)4GL_Uq4}Jo zH)MW?=iS+tf@VR*WmamZ=wFz^zRvggfTT=}CnL%7wzV}Ehbh}J)zlUjTd2u4RiMR; zbU_kRi-GFfvFQBhut;$tS(+Uc6X`7Hl^rF?$At1LdUE~&*OcEmMR7#dYws6lk@Q^@ zeivuwrv6M*L~y7_dp5)@g(HSC2dbZkVUO)S;X6j|u;_%l#TAxA{QxkA%6B&`!KpN@)D#>u`Mv^sj6;z1XIv%s88GgB9n zdD|OHK~AHpbo@p{E~q7;$<$Z&&dpr55;`dvAYz&`KT_U7<)9%xu8V%+BC0*oix$UoB#_pto)ql+rg6(&-`^jLWHZ`~ zRO8337YfcF=@0PBsQ!PWZS?=5ZT5D2tB?B;Z5PUQ4F1UdgWfg;{`_~~MkJVf6nAfl z;*oCsqJUFfy+zXl;joKl#4giX9$@nNYekg7 z#@_2)r!FXGZ;VJdD;-u_f3cWp{1EM&4QXSf4WHmzgWhAq>~D6`3?JErUv~UlE4&)X z$bo^KQ)V?x<=lLp=a!2{3LLpD*V_9bs+BP+fpIBT0duZ!#r!47<~%mR*Oiuk$u6q= z<3lV-cmNH_y6cCyo2y0a=#xxPj+1=DZu&Q}vdH%*Q#ik&aR6&=e zvA(|6i7?~PL)JO+7qry=2U-#xLZZZ-c$8<*rlYkYaVP}bK!z5Wmwyv@;Dwt%0IF$# z`4)$w5mnabb?1?G+0Y`=;nT})4JA;!NDU`;e=O%p&Hf-@!ogzY299Ioy2h_+M zb~B!LHWT^=5^%iSuo-^{cWVt)HN_E@0~SV=S5SPnxm^b9g8WHl>0woVDG`0!xoTAd z1S3w%5h~`ThQ>Vy@X+o)qjlfS;hJVj)%%Yxb1_u}@XR*H=Bj0wJ>ft!0ZnGJZ8AbRDJK8xfE4 z_De>yga&Cv_4SWRl+A8sxfl0%eyr^er&-qU)5`EKNn~PKvdogLui^ohsA5UL7Lv+i z;%lA5AWmzEwO(HAuk8x0(XK~?F`;WXn7eEX^~RFgm8eBc#%}K$*ZAKHtcD#e7USOc z+o!@nc;_0FU-XI874`RgtM1DfLC@ce6Gex!$&AnG1&+tTBKb$N#F{#r^GC}G+%6X2 z4&Qoy{N5kTdd&yArNr&73ysQ|+#f6TnsaBu9gw=uqBSKkR$AK1Cua3!eQHExa` zs+NBIj3Bsi5{*2Phu@h#mx`(gVEdyk^CSK!ykETYZ_86Y*n%}4@~h$TsZE3|>-mUc z$(TvFLW++*8EDukxl$X~vsh0M+T8Gcg@{rDC*BEc1rx54KFnHv$))$v&^&m<%}<)$ zk~_~BKTdJV#saVcNLKbSuIS@q5Ng*7V`jqTATQK|p>nMwn?|BJv1^Af+3ZCt`rXlB*z0q#ouBUIzMOr--5oV&RUx-`^=o@vdt|Ya$$L^W<(4J;V z_U)dZuSpPY1{|Zbi9HpFu_3REb53f$AOn>AZ68@PX7lkyGZ+Yw#@|h8c+~EHLwu}j z{0Fr~D>km{%cz_qjLQ{1fDVNLqtf`cxegpcuK-H{;EhPB_3f%_vC;Mi11D+5Oo5mG z7~aV}{X6D{MVC&8C-P0eHPsC85^lq9dNZS$wGy6gB4FB zQ}hEJO7HB@iLMo@W@Gh9xv|tq7hDw6lb>V{E-zh^{d-FExlp;PHluXfC6e;_%4v-? z-BZp+lAr!n!_Cf7KCf3P_5)Bl91SB(5t{}@k?zino3AQT_6V}&HBTD=b-KlCgSO|w zH4h$$X-~5+-ZHx;d|t_;NdHcYsd`U4ue`>rI3@Y}7#6siKipQ{|KzqD`z6%}P)~x5 z=kNFxU?g%4`@gw~`g%7zq?jVOk7hPIn4LU5w!JKkM_BbL98Xd_e?v#X-2IVNIa_3! znG3`7l=<$)`_t`^s&8$~PK~)-@?2xrG!^)F)Awd`Cj#J^a|glB`ao118&OxN+}+pA zlR_8p${o~+?un>flebEhFH9(<_mKixJU11De4Kqt$&5?t^eqTub^Ai zycWc7*Amx6N{3IBDeeR%Q`8lA%lhpLu;0`72-{7en2|n3?ztpxT`~Rk%%;szq z!mPvX_RDrIzPrBsm6K2zu{bBCq>8yv>-s~?3u|z(t)V7@l2OGKFKo%JGnAJ6mOztx zw5fWu0Bd)<*J*hPr8JNrX)oEij>kcITzbwm3XeAI*aOS=TfVFa)U>gmTxzk@|XVKZ-?FT!Kj9=tiIJgD2@@%4-QVkRY+RN?qOW zrBtfmtVx$|BqGnN2BiGEJlu6e5WwMI9(ThtMqw6lYlLW!K_y}zG=tx8x5y>aS+HCu z3xtj7wfyvn4aE0o;yp}(i>GW z0CAY0;away(kf{Em#fp^Mo-in-qf`sisuM6+V)|;=pzOa7ewS2*;@wK8#N%XURydo9`$&KfIZQ=J<$JDZy-k>L<4F(WW zkm>EW&|)N5OC9K-KeSj&@7A2+^1j6B)RC<3Pt#U$>c_Z`v? zi2FWSvH63`I-T%8fcvk^9%;l)vEvIi7>T-Pr&N&XLvI8^#(VyG!d3rdszHEez)8MbI()N>mcM#u$lROXBHD=x#KbczJ!mn;_+PwS$5$MmG37 zgHGA9M0k(pFM4N<^qMn0kypEpsfxfE+q0}o@T?z5HwBxXbIEr+0inqs>yrDgf`Xn+ zP)LbUi~5{7ev4v+jPI>@Xz{VmRU>KUtU7k?nvid={*C!sl?kHUR+`!y9}Wh5g*E0XvB5f%BU98VEnyy$ zY=b#UFSUr0R}obp&a(gs+DeHMX3+O8W}6D6XIOqtUKviZJg71=Piu)fzsD=sR~1GS z$*lr0@OI*Kdub#qP9p9?yAxf{$Nq1b!*X>HR~qjg9S*yUelPDt2=oqy!fJbjt-0sE z{1ilXU5Tt%1**SYCh%eCK!V9~WY&M*IbQvx36@K=9Ft2ZPu$z-C?=QY3jX!Z8Se8+ zwRjgxMy}chad2y~n^Uix)7$A3FUQG6`0v5X9$VLUQ}DlEcj8u_Im*LMOTIuSL;O73 z{7lv^kH|&TDCUG(#mC3yZv-zCiNpH(mf`KE`zl^)?`vB%1#a`>wa!SUbb&kCdbbD5 zESHhl6U~mE(3F}!-EMngo#v-nZ1}NHmBxg<2VvZ#h>_$%p*(sr6OiEM;mx1&F9_a$ zhJFcsF&J)%IQ0dakwW<1$C4&?9X6R!(-9UX@Z~Y_pv`QVSPdLVGN4s(tn)QfuN<}p zU7Zo>_jpH9F{{V`Nv*n&EX1ymvoIR5s@$hg_KCXW@-VBW7$>p!u;TdzGz|L_8CaJ@ zJ4%8OAMkKXSHR1*WHL|}Aav|$J_LNrDi2kfPh(M!z}6004dXk(+C3^)BMcw@3<6y{CwbVs z*FCWPb)gqgC&pIHlp9N72dJY2a3~Crt78+`y!Q}UIyk$#NRy8B@EZY1(BUn?35>nV zX*l9MXNe+DB!8{2n5IS`W5g%s$_Ezp2mr_MuOpwb*H zX3WoB3~Qor1R~|W@w|*8ZheG4Z8E4R(w{~n&-%TiQGN;v_VVQ`U1>dZ7&}zN7DBUm zyLH|Ev_M?|-TRKk5yVS=t1-|#l5tV}^h2{d3DGtb@!F#3x>q8i!i7_IIUs=$f(^sQ{0pX0;de|~()}A0L>GQ?> zya&22T@)~!(dBubvdSV?yHysA0aA2?nPuWwcHh?nEsAho*S7o2_TOrJkHnb~#=iCZ zeIx$%aZN0!20^u~fI)m2MP!j|Dk$9nsQW;jnq%~thTmiy;fXZQ1SJ(DLU22Hh8~1p zyc_u<#P+mE(C<>_PkJ)F!)W5`j%W2t@4ALgKvP6>cfQR{kdI-pE+Flgr(sxTYm8w_ z!3Uebcz|mq@Rn}6TbWh;)sdKbgW;-&*-#Cc=rYC!G0NUEha)JOlsti#=h@J9>IITX zHTUNS0VzZaM+l$c^3U*|Hy`i5Xi6=kMN+({3mo8ur6|%sn=&d<;xu3Rh+xl0cH5he zyd+bmTldG=Ht@Grl~)H4FGAfWg}(JdWDSm8{DtTN;w*l$)^*w?IX<&9q75?+@6q~f z9pgI~ni+GnlySECMEZv(d?aEuRG`8DgKByLBym?9Zo7K>6jNi4F4tsDaOkE*nRBi9mNNOgF)GUxPO z700oCURhe6#Yg&UdF4)qUqeke5Q1Lt+61K=>Nu5p);U9mJk`{cP__8yw{oB3vbP@@ z%DKHH?LV?rO2E;|vqZl*QLid|jY{dMv2_09ZMprqLG<=c*@biNBuIRn8Sy}g#$Y;LoD;p6eHOs%}}MKClh>D z^<<`vJ`Hu+1eQm4>OXkEe|*6|k$6vqv5Z7!r5G%wXueYVI*4vITUHpLD(g}4gvJzz z1GCO|CvCWv;?53|K3c!j8w0798CJxwH#2MRxGmP()t@PU0xA!np>i*QAQ8y!H{kE^ zuX(l09o``ZOc=G0MQ1d!`LPxii5< zV~*j>G!wuKtfL!AyIwzR14Ty6YXF)Od}I^-id6g2=IK|VIlujba@#GNt}jxGHuE&f zxl-p%_KU?%Z3pnqF{M22MDlkinV;NvjetK`k>|PbDx!|ue9pf)rono845ZcnxRd5+ z*RSAvzjGC{XhC|+u&xWo%Bskno2i4h*ffmjZNjk7;w3Nc_>#(FX)(8NH&*msEx5)_ zCAu{`47|;#4eBM-s?@hza@r+@TF-Juw+u|gsTq7gu&DMp$}gGL&w{cPR?H@JpL zxf_wjsxh$h>!!chk=})gVRcTfU%z~cID3Tiz^z*Hu|RNoyX;2DlRzqkI(_e%MIU^U z1106cwk_ZwS0Uv3wGn%Dna&ABo@X{pea2dlR2R{fDPS-?2avuR)XanG-4|j%p6>Pd zklM9m7MBqcJ2*J(ow?x-=WCHU{raxSYuwJ2YiB3uNtGnH-wk>H^7n_6YsG`8rl*f? z9$XLiq=!AR7i@al5o1-K3SE{e-A<{~YD~P}htQsCj7axig`Evwx;OS-s=pI@v~Y|q9Ao>tqAmF%1M~_T))4_L*7^q=dJ`X z%cfl~%Pxm@E0`KqWi;CtsSLm#y=&pF34(708@|DXb+F1`yF&l`E2WWt%mBWuStGaF zK_uQrl;W^|+4Q|{h})W^|9Yg&(6nV`0vq6KUk~K2RT$Ns(V+X^C(V3JGEIAvyGw zZ|(~IS94C+Kerox@E?tVotpyf)aHOJW&Zkt7%YVj;X)h}8e=%hkBH$&F!a)iDAQ5X z!UPjBut%MD1KmV_j0Ogi?4R3bagbCrK5nqoXkNk#q`1Gf?;u!=kUp^K^-d#~)X=8! zTJ^xI`o{uOOUd^abDEiBlz{WD(BvD#)k-*f*#MBtU)u_0-1MOIlYYDSx?X(5pC9Ib z2?&P@Nn$YHhMEIU!9Pwp^`0+WX=KsMW^3(=kfw%rMU=vm7c-<7@w<=v1Ofk)N4`G9 zBWXxxU6fo5>**Q9NJ#z9ul}pe|JwPC2KqG+ChPd>@9z3Xr~R+bQzMMr7gyc6BRv0V z>pxoj@1Gyw0YK99$Ka6cKf2&Qem>xW=)@jbOY0Q>-~RhoTmIe&d@mjVJNF(iJi`1h zje7obx@VMf+r+hqWt%#>3`h~pJ{-Dr2aoU>3gh~ z#LoZOpln=NU}k}tV_ifAu3(i>gD7A^IBV0PodKDco?A)!Yc0|fEbkd_99BLV#yMtB zE08I*jdh_Hv?{v;BhWuD{D1A3V9FRZ7MeL2j^bp5X~6W&0Z;dEH_Ae&M#vo%h6(JM zkh&)jhq2RgjSMI;!jaWG!)|T5sZsYj`2|nipZQHb|8fn}@ib(%b$7c5SnUtb)O-OE z36P^7uXr04k9z@Qi4ZMFn_16{! zbejepKxHso*`VK7%4Sym#)|@PTDP*d&YR!6cUar*rTj_gg??06iPXOh0aJLW^)-}H zN%nqq_Pew2_)?Gh=av)VhP8WIPy-M^7FwljR~uB|RU9vM!X3v^WRwcn!whBn`j4hL zVQo!`KDTJ*gnl3mJl`IXDMH?+_FwC$v$?U?0ZL&#wA%Z&(CAi;5IUbuZLobSa5k5h zzhX$HmVRZV(`}Nd0LY4n1dl%j^7=h^p7(#wtMi@|0l>jRy-nE+t_UBflMVgl2XWan zvOwF#HpQ@4r1T4Lu!qpI%g~bEcDF*?^qB-cCkmZLsB*fHc{vCKS^`!jw2jTpK6iJt z38MZYNT{eu<9bgCuL}l-vIIR2-HANZ3T4QdMQlGn4}rzVy~eezPLbOvP6Dk5OY4rm zqE@9L^CqoQLO8ksp<}BHy7%{3hb1PRUz$g(wTEk+(qXX=y-ZC%iCw}$PZF@l`X$Fn zPP>K==q0_yz{8Ub2RkJ+K2zh|V);d&dD7@rGmUjuhgaczCifpxs5<4GexTX}%OAM! z{^n%aw1-orv(2qgBjQ(rh=Hz7w^RLC2Iu4+KcoB(pi7lUSgdtv7V(d2I?xp~G^8&w zI?1kk?h(i5Giw>1*vK>xXmqf_j*rA;{Rkm62cTB>wZSTp1R$3@{M8HPP{;=GR7O5m zI%=+z@D{XOd)w;w*w(SIZXn2ds}#;+KiqEo=4LSSRtL;XDwMg z4@76y+1agIL(6CNG0!_`aNftyS@acI>TF8%sYLeNIqxk%%eV%LP0M*YKEEGq_xT~0E@GO} zp;`Y|Njb7Hapw|ZbaZrp6Rd7^pm}-SY027SGgCNoYgY0xxvi%Ype((r zG-P$yyu(;@1v%>&zt?3ADpx8yeITJv#Ap5<^08xU#OOYo%~ClZwmvD;c~l}9Dj|3Y zEJLrYuq>5mBRGrMUjGo|t# z#ospvalKaSO46IrqGLc(D~e;xyczCCKnDdWGn$|phF*+3W;RFnTuf{a?xcMj#RWSN zb8X6`@MeC^ZdD^$^X_;XPbXn5n;~4FuiHG!m3qD{l+Y!Ibi~+N$ZVuASgW@J?rIoJ zr0%@qXmNU|G)bk)YSv$bHVY_=*kQ9Tdq!XpxXadA#s&B*eR-Y;K3~5!aAC1)%}-$R z(BjVOwmCo6KToX?e8mU$*d>eU@}!zPu>sXKPw1;mv@2#pn3#)o33xDyQ^dT z>~nnvmfljEyjKUTqoJC5!TUlC@KpvrJ6882*N@KX@KrLh_2yHPWocBWN+v(a(HF)H zo?ocXb86$rp5^DPs8+32=$=d@AJFx^1E$--NLv%zwC0BXim(nVaYds~D&#ZpoS6$( z2!xD1j9OK-mI!vW`I5+lFo5Q-nL5zA6(+gD=Fki=hrj;0l4%%Q`f44x3A z0#x(yQTUvA(apa8C%kUt9cQvRhK*-D1a|xtBux(Ur4}SAa>-2g4RE}B`v(@jJ&3ZL zt9A-H0gq$b%~#|WzM+kS ziY0WInI;KZe#g@|`dX)1oW(Y$DrAqy4E7D(=TaSYdeycLB2lNAB%M0jR$HBBskO4J z6onjq`IV1@td_49Yd+SyLiYi}cHo-0T_ZrSzhi|+#OM3R5cJFRlPl!pqDz~i!s|@# zBNx2Mlq$U<&CE#WKP-DpFr7<`!^ z&$mQghLqGC+GmS%xi|hl*krc1%?GX~H~Q;sS zpuV5`UO|!C#l*(S(bW9@j{#z1|^LBmvA_l;Nlk zO3+I}E74{C6!fmx8>$MwQDs{{Hrpw@^pkEGe94fcG{IOCrwNtTc!e-*9 zgm2RFSJAISUKDR(WK&QpB&uN+`&Bx@JQu-t*_ej7pIYi#y%!9`Z%uZ#)&rvD7~QOp z#3a`3+PWjV^9Oz^y+nd*Cl#aNadv2sf6OUOTBoJf(R2rd3)gCb0&`U!;-Nx*viSsP zI+)-Qd|A>peT4%(oQGGR;JorC2Qhg~;!ff~Wu)WUyI-6<3uOq_Ow!JcGdDNeFc&Dh z3cV%ZkvetZoxqt8$|6gQc4;B<&n#0nrjHhg`wV{0$`?A~Q#RCNB~zcTq5MVI=-Ib=@a`Y8)(vgvQ_k|ex?A6Ee8&FraStIam}%q_0g zB*Cf0p)Qtqm!{y> z*#}P0uCC(XlH{zL;E(S}FU$%{z`ZYU| zHs1f@#Q)jc%tB?68sGnNwCBn9X#Z9?=iAbLj^BzLE*XhTr+~v~xjD-C+Y*D%g1|jd z8}q`9C|>cn3C0}dJs6dceWXmjMd{O3V_j3kCnqpos13Qir!_WEJ*l$R=j__uZ-Ri! zHDqoY@@p)eLr1d6{GvE0R27gi-ka4BGvS%2GHNn>Gq%jm>OT^6N8ZuV?#?vz{rK!`}X080u`jd@-HiL(~AwLP7s$;i_^Jr~Mj|0T#T;idxJJk~G9tBos}(`5nA&RE;!ElGpRB=ahr zv|pOZ7coI>-2s_}YvN>e=pEHW+&}~|mnM0K@ad{D4|<3GlZF1|HwGY)*kb<-rbJU$CupS4-B>4+;RXj>>lG}oEivv zB*91G5caa{_u8UE;H%Z%-<;l~?aRWLBPt5riU#9kn+EBH5_zGdb)B|OWb!L6`OQmx z5{AY|EZz{zCn7@^`$-9A0ILLe6iJMSYW>cEt&MxsKCrR~I_71D!V_hnG^nplNp&oX zBX2b_rshoV^FiyHceEmpeqhwSNeFwWuVm<(_hvnPXj}sbfEC7=l95K$T!)vleAip+ zE03%4G6YfoGIj6ejN2Gr#~hFhnLCEe{{8#kc+>c;%P+euF)pzu)p}?5W-Skygzf?H z%e+XFJ4;2~zz_Mm3)Q^3rFMd@Jk{}lLx^pqUhd^<-98U$9J$G| zfn6P6B^TOWTASccZdqUYg3wJ}Xic01Js-2$-Iq^3kT(We^4~gKT`KHvHH#FUvvZ3c z&l2%9yfSh2wI7!9#>4n3{vHYIQ(7wI3cUe7h|X1Kyg$z=ZH~9VU@(jLa=UxC#!eS~ z_W0mFHo_8*w}{=T+grJj2MaMsVdEq)`=K;+8;osT>ATzyHUCN)d6Nb2F?KUdJsL#~!MJ&inJU31`vM6r``% zy3f!1S1%S`>JVxsz7r{fw?{TUCe`h`IzRb!_3K{M?yRi3{Aqsx=9uIZpELdi(su<| zL@pOSqe4K)XEyfJL3a)tIIFrIUyuo#(~n`qfkr_JVM~c z)P^lt@0d9Lr`kzaJu73G>SyEV1qVsXHcZ~NwNP8 zPFYCC(R0~C)>RL>`h~Sar|H z`&VeSPBqcR_SiF~FtKGgUub$lKQ6y=2W(`!=Qppf+1*zEs zbwN*);Fm0zEeiL(#bOsf*f)yCFtaI0A(}EVeLtz8zmk+gl@+MgWqPs>=Kgvw#XNq1 za6Ep0`l4A;8-KCO`ZJObgKynj)MzdD0N@&gceaUlY8|x$Ax3GXy7meRa1VcS3kQhr z27Dkv8}@|nsb1~1j#{HEZ|yH%4vgnQECziJ`!&_RyorTiS6&2%z2aO-Pv@}Ung>uL zQr>EX%8Qs~vgmt==E0N4VxwEZw6)#cnWae^V*OIjg~{-*Zvv0K2I=icuygBIoEAeE z7FQKdPg3ghbpgorZ&8^~HMmta1~D^&o54556(IEo?*+IlrB##;dJh&uO{`DfFhWf+ zK8eI%zHMn^mWc!lc-%nIA~NY*>t!zC)IA*#uFk^u$8H`-^(rl*NGAygSM^@kFg_v( z-nfdKk#uh5dReu++zodsRy&$1mHSN@k+CFrj>P9UX7xqax2K!2!Jc!$UxM2Rw~Tce zVV*v9Int&HKc@^I!eY6?3oHk;LaSXQ9y+R|Vxk@lSiV8*xYFurSET|4C6|J`N^~7LEhZadYdK|oUntPOYVsmRV{j zQv@k|OQMH=lG`X5VkhSRG+E4`1foH>u!KBz9QX60x1gY%ii)iX zpA4QSu}|gv*L9*=as}w390dF(cN%VB+=~w)Fnl}c^ru)PX1hW&asyAT7-KW5MUG`f9#G+SpCqaS%dw%rbw0A-L1jmeN5fX%O1eoO1LUH}ulHif#%j~QV z4MWUErCP*R^KCN&0X#oogu}O#1hu^JVvDMfU=9KASuk@SNr_dHmX5X_$ff5Os-e`t z6Q63a!u{%Pnw#eQ2+E|etz^TGuLF;#ozqHtmu|cj^y%fW>VvLI@Cx`ro!^Os-N$M_ z-#xW?-&CtN7+W1~{D_MHG5v`Pnj|Alc3NH8*u@eFTO2LBc*cn%#cd@tR7;4JYpH zX$0N1CxRG15rQ&X{b1j3dtp+c$40mIh?1$J10^-xDjku>e1lVpYxb^ZC_2H1m>WQ8 zm&#($G}&4oY+3Q_3k?;NG)M`|O!_<*PO8E5(1-4AtE8+M@af_b9!rS6%;6=P{hLc; z)aR7Fx!vDoA4j=|G5?C~8W)&g{##gV#OkTBHonZ!kqbO{Ke42gN%%WA-AeI}z<#w)Yad0~+u$xo@ zG4V7(VKxbE^jj6Evwt*YL{7Wv8SbcfGw(yj6n6S%$(Eeo-vi8Y@h9J^PrlEH14~4j zy^&M#zLsL9e$vC@7b1%aV30U`ULu|Rw+f>5$IQ|hgfbrmg3$sY1XcoL6q0(?mU;|_CdK&)u zAGn%e%{yS7f%!QL1RDz)=A_^hY}ioh<3!9B#-PK(A=L`1alL5MJQttEp`qIZsuL(W zE=+F@=t+*@Tph1;QA!izd?rFcCE(EC`JI0Vxkvwb!Vt4t$nrXiuOZ6zP2oZ*CtiPVSs%$rrP*EAg zh%EF;%HF!cqY#*8RID=1$4EW0-TtFSgT3r?)xAR<@r(Bgt@dqbRqtvLA zB;F_C*K|m|B^+Iv^Itu#(8Z%Leln;EIB1s`?2xBn?~u;tc*%Jz_9dnRNF~b}O^*gZ z9k-AMc-VIkzPXpb^Vz?dd4|1(=XsJajzrUdb1*hT<~T2{D8j&4^MK zNRuaJJw*Oz!evgcK@rcgWIL~a7FZl$5H)H*e5YK+FM%Z+5#@LW4^N`_+UH)laXD6s z4<2{L;b&!^aTyD}8BWipPU=HqyS|Yfin~He(rCnRa3pI~V51#CDY9h*x!p=x79%aQuT~s;EE#Y# zr(Wi-^4QD_f%5elca&#i1fQpHM`#r@wj$W|h&E!32j+|vU5;1!Gv}o7x>7&6JxkTR z2svp4vRHWjrqw>>ozNk(=PNbpZ3(bS4)>rA93;!D1{H}9({We8tt3kDCf~F>e$oFb zIls>A$+kW>#64Hjce#Z_mL%OmClw^Kj!*08wV5pwJGIKQ?%(y~#}M8iLxf)z%hIx zPF?yB7qu_0#wsW`E>t8{iGa13W6d*Amd>SV;uAA1S z-$**|GxhSR$=*|~Cm3MOKKUG!>+JkcgJsKmOXUSplK{#fC5cBmPbU-sH5#<Pbkdf(oq+WkTknTv zLS3k9MLy@KaaK+kxh0PK+xh0(%HUr?swk^;xi|yCM32t-Le)pV_P@CSyqU5_csp{- ze9x%7I@)gw9H}Ndjy}V*5pMf6HH@#ltL{9dr+1r^U2|l%#9Qra!e|wv+SQ0byp``; zp%G6KBRy%$4fY?Of>O^$Z}OcsVS4MfwZU25wF$zl5NVJQq#FrAknWal>2B%n?vgI)Iup11 zefRS`@80K}Kh7WD_{Lx`7L1#<7I&>V=XG7b3x__IrY!?iGv)=sZGJ&S}I$AXn-myoaE?M?q;_#A%Y0%)&i&aV=CEv@3g(=VGX&7^v(A`g9 z3i*f8tRE~%vMr3P?l6Q?NEx{y2jp8e+ne&w&Q!|TJa+)gawSiO+86c`CgR$6Mz{A( zF3$P7GElwkG;Tf61GgHLJCZC8jU#{r5@Tbf#G-uE;Cf+YY>rj^q;w&r)r@E`tYxQo z@tcHM(`<8*MuE7V;^WUNn&UR6xjijzS+^~%aWakhIFEDSeC8daVo%)4NtT7iGCh=4w&zUP#2$SRQY%V!o0d}e$Y z5}VMvMOA}4z5Zs7kL8A9Wpd)vnetJ3`AiRMzjQLC`By%NUX%|z6v1VbcuR0@7}GCs za?z6HA_o_l26O$obEznG+HkcG*kv5E;F^Ojix6-HnbVOhz6~w-Y^6|m!WX`C93Ysf zQp97w7Wb{y92+#lt4i1Z8q(EA#jS5JJtY7!^JVCRAD=?3y>Fze>qu|==a_dfSYOtO zQM*$&Nv3>ioW$YdG2x6b(TG&6^Q=q;iAh7q%1tF7pj*I%e9}B*rKUo?1o2&GhZM2y%7oT>D`HQ z?SSJ|ArwRM$}aLUlX--;axiC4AdO(?4J%Z-J+0}M_Nn|3GuV_1D0Srtc60C{{QGfe z$-MESd$vWsp|5WFebJ+(pgS-99PZD2iT6SeClGVFRe}U354>bv;;~mQFI~N$$yibjgMtn9VIkpUgicUQ`kBjjP#Gb_LI|n?{i=Pf z*+^RzSwH0z+Tqm`nS%9Wgps$O*1lF(V#MpJ{5)aB@RnB-*b;muW|CrVa_aa6`t38w zn+3t0Wblehmn0C7&)*gpn5uDTMex3Gdhg?#{i7?%m_%)W`!izsGE{r(GU;I--0L5b->{d!eiNw!$X1nFAo#y2|RH!LV-dVdvWFqS;BS!cs-5R&77R}Dj7c6B&_}K z&`}XyJE8sd1@S|}^~G{%4kRHWm^}5`E)aaMw~(N#mDwk~pGJKPnf#|GZ1WQYt2|@D z3=QwNq(q*oZfHhh+&euQpDZsiS$HVXmd!0UB+7nasCyVM;||zuj~5)3|7w*1&->S} zFcMUD=BS5{-ap-U|M}o8%Y&osB)hi;Ea&{4kx4iZIGw^;JA3~6?Em(-Bo1s-ayhy_ z_n$BFU%w$00X8)8Wqrec@Mld)gKeg6wrni_?G^s|W7va z4;<|O@M_{{z&)pMp%(Y|JBj!u#wVh%Zmgb7oG`P3|2hf&bzlGS=3WHyCw_=?BkIUO zv;Fqh_xtaUQDvY_T8aLDZD;#G^89@d$#S3id&{5jC;q(x^|jz9yvJ{87$qW}hncRn z7HXEB9Al~5Y!viyyORp;m7>E}3;p4Co2Tw#{`W({4>d^S<#@ExonMR@MZo1C@n$J_ z69vLp8u)6J;Omna3O_Jhc&|w&bC12pueX7Y5cdKGLyP_0Cbo z&j!v_3a`vdUi~^J`K752yYDq5qWj|XuUKEX|2hY~HWT@WNqyHhi8^~4T+UN$(Gz)r zg!}=+k=;clPAyM3wpB3*5lSUegn$zLlNl82vIB8Eot1q+%yTcTdG}@#_T#z$mQ1W- zQm6H?vCJ^5Ao@S9+3!#P)t%P&|IVF;*n-LMe`ih`vN1ojB%s#JDu3t!Qz^Vtq?C)J zfrRw3$90&I*xRGmb-xQ(8%&X_Scft^iEc9Zp7X+HbAX_Zpfd@RT0#6XN3Sh@t)6>@fH>-O4W6~Z0G)LZ&r2_q-Pm|`AnX- ziG7I%>-StqtB?=JQaBodRqnd}Mxi=EAgPSq(oYKGbXA3Di$&6l>S}u-zc`WGu4m2v zEXn`sIlJ)!lwu`tjcvqbgKVW-dBEmp27+0hu%`QF5?m(79PRsg&Wip!q@>=;JuZXQ z4SL{TYoXeHLFNqi`q8+T?Y4q1x%T=BGKYMb3y6)B)@cvPpt8}IV*POfO^K(<74MHU z?rn-ru{chhqcd7+#qqh+Uaa@wKFjXq@D)gHL_ik{c}fXbfZ;7|VqKSrIEE|L!wTsd z<4k6pDV8AIP_Iz%$=2u_8JuZnFdhl0a*P<(_h4;}GHtq}13dyyRG5E!lj=NEXfVU- zPId2^lX!osq4UZ(D^juLxei^&J*$KcgOd10e>?->5mE8xs^N-0!ND;Wt>IOW`msv? zHnZy?zZa+hOtRbt455WZ5$uu5PDwUvm_b?I0j&u&uqbDT5bcXsndNuk04#-2*!xE__r| zD5lvE69lXIuOd3p;HvLk$?Q$KE7ESVL?J0Z;2s-X-!zUn?N64G#P(?CwV!KgwP4dO zM_!nWZmOJVf6bS|kXk&}z6MBT-R7B+J>JtSAG|IU>z+7#jcHz`n)tCdnads$+5H`O zNhM-Cq>64TIJ3d&1_()emk z*UJ&|IufJ0YQXCs(j=Pz$vysaLM2{w^MRp_)W0 z<~B_*1JP)qct;4jd>f1J(G4wqlN%e}Bh8nlYS8vGUN3{{~mFrb{ZYxUArwQ-f zZP3lF%ykeN$*3vHY}EILb>Zx`VR6j&u!G9YdAwuRqKaDwQ_0oF!Edm zZEM158WnjzYrduUiPr`JVPx&u4~nM2M2kR1?K^+8qA}+(zn_2gNM(4WSgix#63is_ z2obFcF1-?*eA@Io?Os#{Z2Fs0OpjA6z-jy1m&l`PY03|iF=I8(I)n16W3lNzIReyI z#@bHs%~6s0AxD1EuI*vP(jcYRs#kKqb@Fx{%}jS)C`wlzdzY_TNJqr_Zt24T2bT4F zh?c(7o&U5+p-sJ!MkRM2E69y}uC4PW<&|jJX{SlVj)1_!0 zC#8E12626N+5-vIJdN~KlB?6nr;v~kx_kZ1QEIut423i;-0^)vdeC(i1-vDQ`&3|> z0oFDVpx~ZjMGuY+T?uHHqa`;hIKqBQZu?k8Fuv&IXbhLjn167xIoP|lm=)jlf=@Q| zw=sznIH8#BZ-n!oRt*aiTe6;Fyk%#yV*JCNWUPRtfQ^4q^N^8YNGTf0KVAu~T-l0I zua~NS?%U}`zd)f|KA7$LBF4aJP#uFzPlK_0eBZ6^iTw?)6)~<^bo5*jp45u;7I`Pt zDYr_Oa`vrYI5-DJU6G<;#vUnEP>%Xl|5hR~&-kTzb1G zMtZO*Ev3G;K^?`)$cB$kcl56;Pvu#;PHGvMo&v!bL- z2t-7lsay}XIxL(KaKTurY)?4N;$c?}i!bGxr*7;Ii4QO?(us)rLUw3`V)V?O;J58_b+_r^tR`qe4vS;k@?2V6^Qe-}AZa*> zd$Y0rM2B--lhuHOxT!u{-ShXNt5_BrH|32P`3hQ4ez2y7)w3wQ5A#2Mpf~R&NnV}b zs^m3ZR+`D*T4W7n8?&>eSd{ELY*K0 zBRVv7RjVn-kq@f=%Che%+47ZNFuG6*-8aaW0M3fMdHQ>Q?w?1q8SvYKd$5<4RvwB^ zc!L{nb}_v8yCnnADI=j6*CM`BNG22qtP`;*e zllhMB#XRMKd3x66I{W?Sh}iU%>7m&Y5gLcuOEkV8P=pW(X4)-yt!Vv2@a>e9Wv&#v z>Ms!uN74tMSUwX)enxJ7r$rl0P15)P&T=U(F@3~<)p5(zdeP;!UQxPn;&X@O4X*En{+2YaX8m7@I1y7B^B_{;xyrz?Hp-=YQI-zw(CR{@F8&`R6 zY8}jqCH;~ml3c%YMK9lZ2rcEBrFKXq4wR@yn&fDjDics59rpaqrS65#-J zTt$u8^VT4utR5BbEd*)1&4E}mX>H91$4MT7oWl@dodTCz5 z-gy39!{qU{kQxNL&V%El@?Y+`c&m$1pTyF@CQ7foXyq3d$XnCmU`dM zd+*?Smzg1Kt)-*YiH^a5&O#QLhFh@x^wYLLlYCxW%4`YVxkNK+HRu!nIVRG{+fZu? zQSqH2*Ptg>etvB21%o+0Vl&_IPH{}>$4vgvKu6CNCmd+>&OGl!phGo;PR@HwBfYYk z6R^G~b;m&U+cq-r-?kA(G6*})%O4PegH+);&!fH!!d znAcwC=J4(j$Guo6A2aYX&w`wSZoc|?rCty$1Ju4xb9)1_THvn}>g6wg2U5|4zXPM@ z!QU~~l&&AoddVJl+$+3VH+&2qa56N2$7SP_A(H@Foag9uu1aA&G7ocq#D2lIn}GNT z=t=S>@FcY8I!yE!qSdHV-z3~DxX3T4|IOdQe9AKUqb($eQeBN#S^KoTK2{E*1xgU% z#>an$BcwdM#Df94?1KX}{%e`ZpIhG2w*))HDCbK2{HgVmsmbsh*kZI~L7n1{fbh$^ z#Z2(Yl==MP)p1;u!+i&Rjnl}b{~{;O47R>!<#q}D$?jXi?g&Y4wvsAzC@C0xPCbI! z3M6xGNZ2p=#S`TZe)3^Yk@O*FnZy@`{8BN$27GV1yyj{61^E*JnQ&Usm%mLO5wmkB z@T21CxpH%v_-&24y!WE}j!btlPXZ>bx(46@na{)m9#9>-FvK9h6+Ldf>yv2koD2V z@va991inE+`s;fK;O-MR$e5lJy~=5nZwP7{wU~97l2ION|9lJk5jv)th`3y&nUq$& zRTf&e)lmo|wN?1(DxGGo*(al&r?B4Q0--;00s?ETaXo=a=s#&d1$9tL7h-;AW)@Tj{~4*mroX*XP8hWVyb9FTaxV(1HoZy$SF?V6ZaNY_z{@6&!}N=g+S53XH=zDCTay2U%7GT6 zPw+4)A3&wP$tLO)FUtz<=S~fH`S#Z$%Acs5zHp8*4i7mPUcy?qs6%;AJUAEBD9$|e z@`i=n+vs7qkAKo~QX50Cc8g&oZKAO&hxdr|@SS|ZM}Dc$PN?o1$Gw+6Oq1KRO<&M9 z)~c=Wi!FAA-UODrw$oq`BmNsM=Wz`axFuCDdk!km<)tFU&a(k)!o@pnU`;R=*RveP z=@D|ob?w6zt0s$majH5R&2?@aVs*{=0-6iD5|8i5IO3q%dK9GhSls9Cg~oMv(>#!S zfhop^!xEd=>kz&9mdkyG+^KFNL00+w0e{_xVRYjbGtglXltq0LcD}_vbocD+_Ia+# zB@)KF{#+8mhlNxi)$EQDe+!e59~L!eJXzUh!Ad5>zsKKPiw$wBX0Vl3aSMWU&+-`G zM6PDN&eKHcd^;CH2_>ie2+Nk6*~~9MTz4(o5?zd}WP#U1{cfLkLYk;i>@Of2C?^22 z`HP!CO!SU{LwV@Oxrh+i2j7&Tn+A=zm#rrUt=ksiza0f=!9}%&?Ny>e_Ewu=oPI{( zxw1}JMwICH^Y>jx5{N?YIOUzKx{uwlYTS+j=SJSBp-CJ#+BFwzTyfqD@hI+|`SwBjGX$ z2}8g6M=VU><>KVQ7O?8|NS+46K@Ne{#tiu~>?}srJuqx9_i8G9mW+7_IJr8FTStZY zMsYY&@XZB?VQXmO7Q=IK9njA-B2f)K?2af;rkaf1nz zg21;?yH(2AJgTTYfnTx^JsaJjg z7zUM0aJ5O4u6O0ypI8QvA&x3=bVX{iHXP9Jkp`=g&A#>Y^b%gfpvY-QQ$VUhC)YmC zW6Oc9I>;llnFI?K@PyJmdB#@C7-S=0Q6p<_j?;G7a^n4Fk%#B1Ue2{V1-A&5Loo;J z2ttK^@&jtaOHI6a7}mfs+hOnO^iTy})yc%iSIjZ618CjWNMC&QVSv^>e`Jn3V+WV= z6)4>(5wJe_#`j1~gO030;-&vBbr<|a>Mo$VU~MPDfagYnBH;9}U@c4$UEKY}2;ony zdhC%1ge0FgsSFq(Iqj9b^N5YcxV7@XG+6K;8P7{zzoUD>&4aJvZW_3E_{Y%snQArV zF+C~F#5yJ(Ho<{1ACq&;wwP_>(H;}f26B|-Z`?!AUtyZQJ*47(oh9`cQ!eAWmAZ{|mkL>^R(2AY8s5|Hv-FyV%egFR zSgRc9pHLqpZ8IOyLCN2L^dItSN%AkP59t)~{z2f$G$gk1fcDl`72mi&*b6EEXL2)9(;RU%Yy2L0WOkstmaJ`+sN;05gW<$n;*xp@HH zgO}%Q_a7u?V2$I4+-3nqe~y3qj`*SE9;hU8Av`XB^(XurO9Viqz#a(l;KwKYeT@D% zQvdS3c@%(Bwny~`lm7v4lKdX(h>W>W@bZRKA^6v)#^1RJh(*ypMKF{dv^`~ei~MVj z{@0W3uaCb5K*(IA!?V_r{Evs`*DpUg0enudQwpvaP+G$S8UE{Z{U5&bvp#GT&tLZJAI_LqFjNO(Pr+_6SK}&E zMD&UwW@0}SumMDJv{gtU9pE1PROe}2FzSE5pT0(Ts)o6ObPv5mIK5EL{K6}H5Qs>o zP`#VMG2=)k_xkhz7$O~0^Z%P&y~IZm3fKU^5~){x^@`P`^rp_lt$O<#6TA;7?Recr z`u*h3qb2~Aa#I{-(4ENPU7;TQFVB~(3qT=A#fO;XuVL-t#EEI(hhWW=MhrB6|Lqcg zYX7}P4?wi9fA5Y!t|2+-2*3bK<&*q9k?z_fnKEQ9XSekF9WtRp_cs_e6v+YO&^rb-}yL@K@9=-(&qlo&E=`%<2==>FOf9z zS|iy~v^(sU(dxDv96ZJXUSG{)kW2M9E#2;(T1-~h*VijZHZAZN0_Q%nb(eKSQX6~S z2eZWq8d4laosmZN9^gRRtq;+3Bd3x}3gk%DEtyo(ynW^uRt5XqZ(6zLB?0VQ&?M%;@$fDSj`vw!` zcGV-EoDqkH{KQBGC*&ez^5kgguH=iuWndJuHVn1ZcmV^zZ(zbvh5<@KTbocceWLk( zLIB@AY44p{+TK{`7AKJ^yv6=(iAcQbVKOG|aV&-p=ih4Ln*%)fI-nS>1A`n@0BYC? z$q1~-8A->{fw^^*JQ$6GSovC2N@s5`BNlTyf6E5BPqAnEmZsulm$kUhX`d1+peQb_Bt7 z)qvHddH#H`)!DmnIh<3~Z79$odA(MlKw;Rji(6~5*Vk2q+G|h9SHjyKKmmA93fMjL z?|(v`JwQQD);L^PsS&QaZ#AnZmX`F9K9Q@tk?Yke*%+SaC^9q}qf5vWXKT$=Yu4)w z&?ncFnq98i7|ueO@R}BhqEteyl_$3(IL4<{>)A*L~Aj7bEK);QH5Prd_^$j9eMNbjCp( z$|8pBW^$*pP&7F-F?OZjPLuA7KtjWsP-u?Z+Ws|f8b;u|?`IstjoliXoe6rO+%rwK z;0~%UN9PAkn?aPmWP-mn@jSOTrXK&Ui0i+1`%&~4K|Hi=Qni8zD#OBG)&|swDZX9J zqA#^u)xg@vX47x2xRWo-QuzA8iNk#*gSre9oJ^Nm2G=X@(8uxGMpuu1NkPzi`EG_T zsqsqmrdXS0@7-dF6ihWsUvK|%n^>ag#Zt>7rv^bo>RS!!+*>1=Yy6Hf!yOgV@eP)i zb9nS}f!~VwNK9~oz4~soElOQ)t?-fRlaER|I!0Re_`G!a_gb4{R6XG8*VvzLqOwvd zAVyK*dfd8Fc7?mTUhG`agU&9iMHa*h7XC-ooDOf$tZAUxEqqGo;=Zwawg`Y@2C@)4hd9?dudbcm8yw|c9hXD3N+f)0m-dJV8| z>hw1maG4LewnnW|Z{KaI@m}yw8Ofgg$pTo2D7b1F)CYFY**12_N=;b)GLa4iN zxVv$RyO~w8H3~wA*QNRSl_B!>zfmDr=caNL6*@z{qUAVn@;vq75?+l&QdfBtdwQ2+ zjxr;W4DX2aJM*mxyS0kLlVYAXR6VGg(|iTgxI0Rr863g_M@R_t^DxSnXFjoG+XFP`b6Q2=83mk3Crmbq)SpE7w z1Vc2MwQs(#Iya>aJ9U0(sn^eo4O(0tn`(oe$l=(u)mpiYEz^N) zxs-u-ZmzCAQX#Hf7sOlJHT*swS7fm)mrU98u{egA+m|AyAt{00C9)VK86i|GL%wT zT@N9!2n~mLXSxrXWE5~71<2@L_%jEeURxZ0C(87!rMVEVP{;01Fw`-Kri-Pg_>2=% zdoUKg{&@qj+$>fc0(!3D@%`e0lc$(``TLtp9~}(mCOTV9LWVVmx>IEx}EgIe=JE$TRfB^L? z?B$nW0!v2~%B_3WNtl*x!9NY9!q(<0#+iiinKx6%t?i{eVIjKMXr0pYXS#~){pRiD_YT1n zZ#o60H4a>AJT{BSJ?=QDIqQ?~uMNHCxLsb%ZN7o|W8~6B<_Rwj7FXBy&iTUKwpozi zp?oQkcBCc=`QQMB;$}$ofkNS1wGd`c(**}tP1@jm&SJ=t+YA>GaZr24gs0w>$aCx9 zB-anEM`)GFPOJQomw{v554HZXNF@Urg5AS)+^!P1FP>f1%9v-zGz-IHNG=P)WC+LE zWc7vc1;1>a#4_91u@uCdaFixPzF+ds`D}J?sGK&n>vTf!#ri~@_;to>f$<>wgKKQO zQ4s{3NKg}paPw4OXN(h_vJRl!9be4`*L9#q;q1`TbxIIxU)uWIo#5; z3Cb%!Uc&O&-&8l_KcPHx*k6bumk96j876~iMY*_Y{VFPqQC{f(WH+1AkSe$rq5PwJ z^+^qah0?{GP0U<{epFkpXmCg#?y@;>EM=O0R*}6^DYQv;7sP1nty=8z7Wo|f2Iurm zrN6OP-P%6kStQ%c$2hy98{ht#!-ik@iAqxn9wOe=*BhgpY?)u(&kz0m%AGIYmc52< zIp`S|n7MRJ7O0-N>LnH^rtb0>r1Lt|`iOSxR=#8;p0W_@Q@b#U!+4dj!>J2sjsiF` za}*|nM4Ya|8kO+JuooxA5#!}QWv-ppijYshr0*?`7xV%(p$mU<<&j`mtI;x+E%oGw z?J-j>MB9{c^NE@33BRUVss~pZCbd%6-EI4e`r?}k`-Wjbi`iw(RlMByAFn!UVI+yt zC~nU5)5hf3cn5!Q_eVgd6jYc`SkoXN^8W0P@M*W0ysEQ5C|PV5G<(#zvE0O_UYa56 zz9U3Kq#03YZ~cAcJr)^vyH`GJ zNOzKFemJYKQ5`<}AG6l4AiEp1pzw##&SD=s`des^gX_E6$ZPsqwNOAOb3fSw=WLCS zkqSzndywoNJ+d{qNj-SY^0fXNN0z5&FA&-%OwFzq_ak1x_ISqNTog96dE?;c&Ajiu&0k5|8>s?0ye%c1Hr3>LDT3tER(_)+nA z^JafUrXg!N8zDCcupKfdlh~I1bDhRfctHum{&sDzR8}KAJ%(N9YS+g@R=uypkjwnz zwT+ml#Pcp^_H@`q7I3a4Lz;Cqaa!^xSKAf5WmGfWO6C*Ve3oW>*7uxQLo+2kPVML6 ztfsDGYkSe$uUXuJw2gU>tO6QeVGR-UN|QrCE!R9IySg?Blf61@ zZ0FgHx0Xp~B+2x>diDg8&K+f$5o_>sw_?_G(-FzIK5&TxAF>Ywc7Ra414m_ypj*P@ z1-L5<`@YVXS`?Ymmp`;yI6+%3Q+g7-1Nk>X4x8QB_ci(i4mUm>w>Rn@u}$-{FYyW| zHt1)4wn+QT9-Xw6W=e59;2W~xp_C@C;#dq3%A7rGnLKI9dZB3g5MGq?gL|EhTA8+6 zL~>*wQB(|$UwKsXs`1*7>KdEVgLD#78P$@Exh6ZRsiSAvgmH%RbxyPR=Zoc=@*JmB z@6XLrzq?$J9{zx+`h7Y*^XdZ_1*9TLtc7oN_No<2Mt#ZV2m1OWR!zN_Y*qdTqPcV|?t!DgVLs4I zh03ZsPa)Sa`psQ?D{W({_fCuY6pxK%V5{vocY9x}@AD<}QY>Favs`S~fKyIXkVO-q zDDY%jzh=`W$+4E{YU8ono3R5Bh0zCy!X2$)Z|qklu{JjtmiH$5{6eG|KJXl_gpJyn zr3+<>LD)6xh~s&W`ZXM8o(^Tb%IOT{HtjS+xh*MYBLSG8cO|tVQ#+Xb6Er*f7%lkU z9!i8j@~$V+)Z-~p*?y0Pliqw=^0&&F_y=&pn!|p5JPv2mcYJ_~DEZ{%K3`+oNv&b+ ziO_KLwo4d_7&Y0P>1$I6_Le>kdGqNfm#N`7EX2_2ChI}}$ZyZpuPTm5GUVOJgxfz~ zHj}gkg=~gyGyS67pm{QDL8YX^tbY3P#KJM0>7ccYMm%(zj@WkzLw@%N+0$mqLB>%u zbJA&)kY_)>(sEXBh5Ey7QF^4Jc{F3A*`~(#h0gjW;9@uO099a6!MBIxeT8@D?W)VU zD@xez%VY{f?ypM@5&3pYI7A8|l&MA~Yz-9Ba#L>D-v#1dy^l92R2D(_V8xJN?lAF2 z&S8B42?=Utm9AYb@RpV#Hqw6Zm-a^}$wO#*{8h01i(hPlI`G-{7dFA<1Dn7L+!Nw+iq+t(6S>>?RJ+3&B|;Y5`kT?TQYF^| zWl>RYo}7PKt=Lj(HiQ*Gd$W&BUkt3eGh(#cEA5M%Xkx9m5NUh)C}7A{_N!Ir4z%j{ z5()i03GT6aR;D%PAoBy3mE}$8#-BR61Q+NuHqp}Me>5+N3Z?t=9OoiBsmVGlieQ`S zhD^w%V*5HOC`Hu4_oy{vR2^fgBf@10V`9Ro@#<^l1A-t;oCFJk>-l4omf5P0d`(MY z(E-qcq`%LQi5j%St;Ks}Tpau_h?H2pO_r<`vWZXbc#X$>U6AjkAZb_$EbmZXp?}Ua z>9pC=k6Nb!1E*bb2*kH3%p!#5)+TKcKE`Algm97YpHXN9)M}mPX>w=3<-+$=0}3(5 zoZZ;ekqX*LfOD1d-G?>3RLbm+wJhQ(hPEH%&zcuu_Z+Y$nWy|A>`rxCw4tkMpJ^W- z%8r%GKLS94A0t&%^C3BG%afm1F9(8IiIpgFFuOjwoCgQE)qjVl`0^Nw-60#E;~|BQoAJ93knoExWX8M)cJGgz3a$xISR5 zKZ5EZ#^3R%>BB>e-#h5fY8hitE%PhJKL*!*q-D?IDBRw0r-gK806+53ECa*JkIE`c z(${9ko1<%WB)ezv=;IrV7PL_7#cE0uzZL?~`vo4EUs`!Q8*em8o40E(8Qhb9&G7?L z6)eVv#-<=D*#%^q+p435{xc}WjCER-I0$t$%oag-*2Y=4aZ!cb$3NC`N2PJ)X1tyu zUr4uub{YQi*$$*_+?2xni5tV2qcx%d-(#@y13zK>nQRWNFP3wfb+emi7v8+HG0NGb z6lGbS?9a@830;*$GX~Uh!($#(mU3ng&yG@|kME{6luUT@`f@x8@II0)n~(BErrE)O`pNBPB-csr}w>1yV=>8{s<8a zHwG`o+PnR3?t4nVZI0ZarDz0U3&k>7gK-sunf55{_sto~Q#6E@cL(l|cwTm*nD)W5 zo}p~~*&kC2@$I-!&g9mgO8vAzuJdeIRx62WMXk2nbiKhLug4$>v87*QvuM7}HvXyl zOEb3DSko;F7!}&fK`~fNCVH+~9F>Z-5T%ltn)n8R%5=_YM@6goUXEoTY zoM*0RUv)P?cXnBQNqSIHywqeNG*T;e*dj~F+}2Nwg2z=gn5T1E+aW*t$Ayu7Q*80R z3>JOHy!5Q_LvA?p8I^AEnf83_ENS2&h(p6^|(lfXC0?1WJN=C=fX`txDTtyBK^{6JqCAq{KPq4~`?l+Mx&)_w$k zHN2xUl3$%3I~Hmx+CHxz(zca%(F0FUd%uqra(@o9sw~xwM+-*+Wq+ChRL(~~!Da4x zy@+N+_y%X?F}O(;P%c%yi!jKQmk;OO+->X_6@Vq=p*Lw8g?4zu%gZ}*TPGV%uc?yc z|EnE^E!Bc;mWm^i%M9QOAKFpA$n5m3oKiouqjaViD8RLF7M@fgw|`iqS?$i=nKQWe zYRbGxP?k~dt3W2Ou2g9ej6S`?RJlHE+1Bv5^^;N9iabon_slJw=mDjYgSy?6;J^q#phPatM|U zuG&xb>)YejAt*BmN2l!H(VKnhyijRw>O5k`tmdS3H!5>d#>)xCI)!aRSdvj|+jiBY ze~aZKL#``EeX#-zTGb|?utXSYS%;Db85EY7JrtIRCs4}xxT>}Iwns`}WSVp{i$290 z;o$BDN%9y~sPQYf!wknyhG0G47`nvx_G^k<(U6+ZQiH=H(Mt{<*-+|UG>d!+IEKGu1n2Dw)I$eRP>=*4yq)De>(<2JZ<6r^AP{J z{f#_>1=4=RSVYI+oYylnu^7Rk(>Da0Nt_kJog9AVx;6I(aKbe}Ob@D?w9I*&cWqMk z-1dGzJ8a1^xnTR|k5-CL?a=sc{C*CxXlS*5oA{1tT(%qU9P?gXmOoJy!FH#F=Qly< zywS@XDiW%P;K$%9fL=Beegr{mW_~)8!UJX+Zcj$uS|hKZsw~bEp!755*Byt&ZBp+H zHBNTzG7e&0!-3O~H#dyyvGdPz8Sc6-gk1Zk@1w~;Y{d|o7~cw|CA~ZS>Y13%XKW1 zP(l;?d7q3X5*c0li}gFxEpLrJeKZ?H@Ss}~ERu-{{Q3*jZfK*vM0$7kO|r`ZZh{An z2LGG>8M_X{wlXG_FJZqWvQ|fn8uObl@m#MiDbq)@JPU@Q;h%c zOwWOIZ5HVPv->x4=7Y@n|K(>wJu0bp(oL7SUx0)^ZC%-=jW*g)FOJdQ}*rb1G zqapSZC*{Yu6Nl;_{W}Ht;o1Hu4mk+o`3JH86Zu1N2)aq~->bXgfPC~z1vlRPCl#Fh zVWV*V6V`taxPOg zu#5ZKeFW@10NyOltl}n8FNGDJ!BHlDV-V0kbf8m5GKrFcc^~Yu-sfFm!+5w+=Iyf@ zWbpeCh7Wd+{;j2hKNgy~UR%Y6^>XNUD+-yuQTMd(jv!5|EBYrUFUM|$tbM%YnUaFH z6En&W4MsMbBg!rY4@-p6+gKF+`6BBbxwbZ7itM(lJ|iAYm5`DDvs7!^;fFfj%TCFM zJ41*_>ghdi42$vY+Hn+Z$T%|Xzg(%nOHAx?>p)>Vib7!t1(sJrn0Yf1r4k*F){X}} zTImKs)Rhp#$E!@*1IQLA5W0d_jg@b&Bco_xYS|)Y?^M@DqTOtO>zRv>nSJH^XIk6^ z8rn@&%cwe#*>d2H1Fw{Pq5sg%8AQk>aCdva7qVUUdY9~BWT;T{7KS>OuW5IoObnY| zozkOFlc>l`#cfCCa&u8gPe*Kh@j2B&y|ReSdJpvu`@8Vm(fiQ!&M$R5sy7!$YgCJA zrN#&DxZ7N<7Pymr84?j)IP{?N4ku8&6&l_EM5&oST)@>h@5O7gCO00A-DT9)A31YK zB)$qO(727cd1;uZRcAlXuqwf2>gu|-!>B3M;tjKQb-GjP)T?qtz@cHe*l1C;S{=r0 zC}}#Ap^5M5it~Mle zM?vWNl}`3ayJ_akpYd{ZE@!(@VAYiw5eOY&FNBjk5CDZigv2Dcsk53!|eCzZ+q^-QU3r4*t0A)1>igMwKbYBLnUt$|eY1ZJ7%Z4U zj-6`|U_LLvj7hETY!mdSfN@LyvFV=NF85?Ga#F2$;97U)DEpokiYd{36c{YW-$-Kh z^iqxI$L%#YKPz?XlznJR!4>-!Si*U!`!w+>em)xydBu7KiV&Z&8a^1GDwi3UdDeX?=)r!4veJy_k+c_(8-Lt5 zt0{)+jM+^W&!ot9ak+QJ0&v)i`cinbkJkqFD!Ezo*}XJ?;=j%%Et~j?`lJ7K&qLSy z%9Q-E<#<&a+aVal_V!ZfB2*yzl;;E@@qUUpS25r3p)tieWUcEc@xk(l zvp)i3j&{Bo8^$Mjg!5UVCz3kxi+;Pk^%Ia(jpoS4vCl>i`x6DRUVmi;Q2oKXs@65^%9&|Zy5J3 zG%XVk%UmK##R+R1PNKE0H^UwahwtK2=s8=}lslzRhANGr6v+R00 z^_FcMx#>QgjeEO_ll6ULx6m|eF?NKf_I)fbRZpa7_(m5U&g33*=Mkf2D|8P}OmqGH zOj?AE$fequ)dAnr2(j1(L<$Ns#yi)I8gTn$goZvwIp=lg~q3ljZ zizKQvrChRf#mQY1f>k|39E&kCp4BzVjm5U0W5f%g$A3osFI?~E^NhTYC8tM3xvV3K z8Z9T_MaAPyRpvuG9`$ocOV)lkp!VqdBkG^+WZEw2*yQ!Gkn-a434jsM#>mFIbc?a= zz!lMF@TnFsYviDQ6)c;sjV95elfMz6*4{Sc@L2Z#74%=&a;1Mw;RzG*`CPV`xWvpi=Z`@ z9e1y$1n}?3kN431*)J_;NM~ObDKA^Xk5a*z#IspGH|$Xk1+>~&m1sIm2F;1Wun@i* z{)e1@a(M)3(E8PevU}68$E)8tFi+E*q^DzvOu)H2)^^Q#?o{{|iyCweDeT>z@9O^; zjJB9vJ5jNK9>gFw`FMd0GXAxvV=+j^`NVSjdUEP9)VHO2OJGj5HR<7x+`Zj2!I6Yv z2ySi^Ai5s~bic@JPJf?oPc4NGkI!YtX@2_|Y<|Y_Fj#WWLR%v(G~M&ZSDF;Y%hw?V z!O)1$*El8Vh+(b8EV?^D`QSL*$gbdhkRDPxm@fQ0Rx~>_5$K=A&N})YMdQ3iKdJMw z-&cjh-KxxB;NAX#cAZ1-JnF(0{$RHS7#GA!0W(nnzdRZ)%=Xvdh|w5-bpqRm8kDD? z28Dnt0bB07*u}3#JyNoZF|#q5nyTdJ-MJ-o(D75 z3Fp*;5%sHcrYwW+bvb5^sV4PmU2z^nS#^auuOg0zPHCQfdK9|hVHmf?j`$bR0|}#3 z)p%A_Z0ey^+isn6i*B9byfstB+47WPeYfswWrBQ-Z-e+U`4Y@nS0wGHfsF7Y882tS zH}qmmiGF*>`}NDxN(1NO#HG1_vWyt5LUT#4{r+*PPO_g{v@zj8Xi*k0P&uML@x~;& zPP&LxUM|dfH520F?4IE>lLDv&67}Dci@(MOUZK!3GCsMJWd898`i|e`wz&2<*9>{F z)>@);(xdZ6ecjfauZ7TCE&~(Bw%ZnIp#u3?i_Nf}F5*pxp!ol4@2rF3O4m3Iq;ZD? zf;$8W?hq`2;O_2eJh*F+BxrDV_uv*ZxO;$v#@*f7LozdW?!9wo@7C@gTeX{_Qe7R= zed_eb;e7A=yw5L`rHMPYaxqW@I52jTQRkBx`qh_SSNcdL^I6z$gCDk@ugpD8GDiKR z%GOwbrf=jgDC1k}4z6GJQCW+rd>e}Gm_JJc-BlB&lTeZ6rXP>uekHHn=zSz6`E$Ts zVCMMLaS;eplMN|UE~Sj=Yax@W8X_s#AVz^o|E1DV1#i|T%uEPEV!U!dHkN6I zt)nqSZuI*0*^36Rb#=;bPT*x;AFrcRE=Zxz3JE>mfLvXM%X&w6ia(u;#)rJ)3{V4Uu(Gtw z^)D>rlk=@x`U946jmge*lug9oQw6@w0YXdo>RuZ(dk-;zeeqqxdR6j28a+@MnrR&6 z|3YPS))F;$kr~b7PQBQnwLpk;Ki?>vt$n1dA1yIFDtmX~8Oc)1Ni**KOi3@zrbUL3 zCSX!UnC+k9OP=d!ntN!={3E`k)pMk26&I+2xMIjs%OomuM9UgZ%c}bnlupZcvG3E_ta@JTk3)H6H!7iB`$g!+GXSJ{A3G_fW7sznKiKG z_$mT3pM&(`ET7-%Q6EluA>JC_*kc+E=z1j{_6$J9;{T&fY%}TMhto$9?9z( z?*gw9*TGW^8pWAoO%g9FpRMMD3`rbjzE#?!4aF>dsCAC8>|1?X_3g)J`#Ak%jzaIp z&##Wz`7l@U^MP#$g_jgp-(s3+yltvpwG7r9S%N*5mr875yeRY6p=AY0Yt@F4_l;d* zN%j_B_E+yx8Y6Em*RwYcoa}buVC{}~I^~CLw{NI;cuYPV*4o&5JiUZG^qn*RSMGFn-qGc&E~4$VzeZ<9s*V&TI~n>(ua(YW32FpeGQ0u6Gw1 z+D>FRZFjtOfCffGl+vW^JnTESr!blWiBTa1oz4fnhQ3XnqSc{QizDZ7Tg6wf#cF57 zkr%yDAJ6+?P27(K$jrAz8rjXlq$?J)(D2o_-Q-*7fp&aj;E$@+$hB(R&|%DO1Q&zJ z;GS;}gf*!XRx1eb+2|gfU6b?*oC^Dcd_|%HPjf87NkD>AFT6G^2H@$NPQ$8{gvEqf zpKMMx0`3I~z`YQES!#hkS2nk^+0yT>0>O&!)d1zXN+~nS?!@NE>dM=bp%+o8$q=eNC{)u+8jb@n!O>Iy|mh(UcS0c54%m0Y4~q z&eu2WVr7@LfY9{uh2zoV+LHyy@kv5u+s!*-J}+&3G`PjBltyPNU_^)2;6(h=bJig% z!&fx)JvCSh9q-#Pf@OMjp#R@+AS%nHF;OilMag+-BmVnGyId9eqlOgUL|?@3E@~_= z);9*dFbO@=-%6wRHn3;(C_6TljjFNIlo$>g=8nFsl9egQhrGDSAS=;rRxkg>fmlcr zr@p}`t+`_rAF*J)3v9Vgv zoUe3FOAKC{+ODWRd{pN+hlZEitgHiztV-k|w!($$r+t!Pl0*ve5xnQs7?g%orOAZt z+9v@Y_ZfzG;_;^umdvc9s!-gIk2#Uc;-%_ymGWfgG~$1TlFZj~-l%9Sw|53BX3LXZ zpW}8PG#^dRo{Aw?TLsyKT4V#AAcAe2XP*AC2Xo;8ih`3D{8`8Ba#$V}Q>7Xm1y9Qf{V#lm&9vxl^ze6X=76kr@cIY$3-}ws3O)Z6W6yl9$@I5%Sc_ZzWqSB za~*8kV2Rdn2_J_veaBZIT$5-X-ALZ0w^J|3h3ub~k@J2ExkQHep^pBk`^*2J>Wrn_4I|sWzHm3l45=(r;g)_kxDK7 zn39w*UvoMR1}58mcs{JNy&Bb*3FKy>#u!DfRw{m~nKpyHYh1{&T}r}LO;YDgqy*ko zUu{})2V!6a%#WP<>z=iF9%ejDiQg^E}J>*ky_ zs!5bKXMPg=g|FcLfv>zXDn-;hJAQL(aOY$LsKPXXseSC+VCEvC0rdV@#?=#eE{0TU z1bLn9H$&0116$Br?NEsov9QYVPYl7n2ZQ8k?W9b_Go{TEa*}J|eFSW0zu_xlJx|9r z(=!lT5=(m(_{NVqH(ShxvkcA6z5bw9T9v+!Av5c{N0=5k#`4Vu)qU`z#z7pL45ZDOWcaDyzD;<{fVlPx_Y2$ zTHcI5y9X-5UnOCj%YL{pkmURLaq>&VI~z3rOAg6SBQ<|q`LpWR;f>Vbb&6Dx>3v>F zo@&#}r6Q+N(H+l$>uVr|3r2^*mN36lzV%^Km|19lZM(pjT)2 zVUX4wHvh^9mF=K)+3N^WPHVT(Z5COr`ed2H!G3qBu-a8^@5cx!sX#cp*MSM;n2+>y zI7qFed4Ea#=B{L}P!z90Y-Rk;ZXb5u0qNtan*i9Bx;Jq?zWF5|4x(lehKugBksO`Q z{k}h3dW<>1n_DXfuI%Q!R&v!T!^gd%OaJvS2mqt?QMG}9xPV}Xy6N>43 zl0r&)0k|)^EyfFc`q4mS%+5ikKpY(3Zq^g}{9&e)_Y{j>J|j4}&8ijuz;^aUequX~ z9PnaE57Z86y6wa((I3FzQ^L60*wA?jAO1A%h)^w-e=F|oEo`$1Fg|2#5_E-l-!r0H za^*!;pUEVt%UR@+CFi$lR_vns_sM)-(7f4+4bc2CBXfq3m zEJA7ZM>gNfIW$Td!qPB-9eL3M+S4`I3M^AtVam^Mk%WcSO>@H5*B-Fw0rI!E2NJ^a zhusnnbPwdsz&~Y;DApP%VMp7Zr+WImS1aS8TMXoz!QNIRcVWZnQz&6Sh>b zhDt1U4Q#$M4Rja9;lg3LhsH)ytL`LJz(Rig)!sWN6loZ5VlGX5u40>3(tiVt@K+L7 zN|8L8PF#}@3?5V*9}B&+XkuU{9S;8t7+v}GV`oapsxSKr@_@g!QwfVb(h#HsbMqhRn!5%4oH))sk5Cdz7E^3G~}h08xI zAOI>3ZS0#T?f(WCdC1sa+y{vHEkkBc2|~K?jt-Wf_1>4ZYj0~K7=i@#f66#4|5e7} z+*md%PB#ga!ta0ZofWBPk}a*uW^7@VIc%u^ku#b!EIx6 zDU{|`6z}4Ih{vNGaUsz2RYJ4(y>H?eFa6BI)1SG!WD6~}`$p(pN8I3c5ZeQU$pwjT*GO9jYK^pLBs>OZqY@{F#*G^In>whTJ6RY&uDDkc>}0SjX} z_S1WdJV2Jnc766fE$Y7h{s(Fi&s=nfJefiI*JHM*+-H3m7UB};_%Y1Og}=>*{YDL5hE&KLja@K0@sU{( zjx5N(je6^~swxpbr1dd;^D*Uybfo%i@*TrLFA^LAYk-%Kd~nOXN1nvIQ(A9WN8ZX> z0&-ho%fU1nc68B-&5M;>^Gj;+6cHFF;^=WU60@|_)apJkwtG>yGJ?{16#;eX1hNyW zDbR=Ej{;#-IC4zzua-vgbZW#r?guBTAW<(SRF+4eD zogIy=gWtEf*V=I2Ni5R5y?C!ceK8aTduvcxZI&Pf1*B0y<>xz6VP@9_ACw#0;4UDg;DRu%1v~Q^gLrs(Nb}i)>f${6V zM5hX_+m1$mL#N(7pi|#ngdXf6e~(TfXe-JLC8kZqk+?a;JZh}LLq-L&%3T`;YI>lY z)IA4FRF7R-3PE%$9PS8D)l%h$3OA{5oZRt?zm7+p5^$>rZu@Pvy_j2_*c^`}dkOc@ zLLETlw|ckwFr`53%Z5B92{ft6ExXX`;ehr}8&N!@3dtEZTwOuLqXx3Wu4NjR{L1WgU;2mX@2*Q+EN{i#O+-p@lIRTw@YM}7{d=*k` zUT9eAxZzV-jr6@*eP7O?8l9xL^mH*YXO^aVw~$JY&bm)u!6QkNu|)Gr7kEYUPdJr| zG43hikmquN{QeY=cWsKVDoqvbb4ac=asV4!m@c7h(^CCu9{x~ns`%kWFNcty`Sg;Q zbKDY*6!~E!b)=Tp9$tMBHiI08999A8DK+=@*L7R$r{ttDh*PKX8@u03wRMOj;;Ca0 z^AHd60nk`b(D5vgQQW480r1N#(C*;H6#>k6J59pfj~1ydE^AYduQ^h2 zQ_CCi8y(9b>k?tUR-Gs?BToLC0ym#Tz?h1C@htDO>)wt!X)LOvwSSRzBlH_=WMm8{ z>=%xL@iiu2>Of*-$dyifCMp%n(k|ca)X|7K2**?gDm*aJj=S%zL zMF~EGm^Rn+>ae>bFN9#6@F<}j(ul>~ipcf;*X@l5AzP5PsMVcz$HfA}xXwzr(wBrf zNHg#x)2mwS$ z`(!R&ZW5sXnXdSX0Rse1hLXK7;rfFtF+_q!5HTnS5t=U7Mtk0tc-|AQfjPyGT4Dth z0Dy1})L$*&2V>JixW>(mpWm%$I&aa#(?ah->AlEtsK5J1gkTIonZTshxc+n*0*oQe zU_vKOt_axe;m)Y_*#-X>T$iXGz|@M7j(D%s)+hGILHrtA`19X}k9_Ms8(1DocZUS~;FRc`?h*d& zl>8Nk^?&Cf9a4;eM`2w5E5C?<#SlD8VfPNhe?DEngbWsR;=$|xr-3K{#v8aE`eyVu z#GW`ghG67S$A8Apg!~b*%T6jTniQ3R>jooYlTtjV^|juohbghnYQ9dJnOubGeo4v& zL|^XB$~BJ#3E|lP$b0$rP)1zkz(iKg1VygYOJ}5V9&DKL@SDeK&o&57*zt?QV3J`l zY4lC#P$+(KBu*3h2*X1;8GN~Vl@S#Vd8+jbT72&W(!Afd=dquXW7Mn1+P&&R`|~9P zAPi|D7E4%x&Vblb44rGdj%WhVRquPK-|x0y8^peW#zH^`76;#mWLDvVZ})JbV9*XT zSJe72*&!BH1kjQ1VAxiNI`!ylCiRly)r*>r$R}N+-`*)96-F85i=Pmb!h?r;;Kqy_bw+@|JF)8fvdK@rd(vwNmzf$J7 z-7zUWSvw!?efQ$=nxpbvsNKX>x^E2XzAPE&79TcFw*toJ7v+h=|VpY%eaO znc{n_?Vxlb`v;HFih##J{1T;fgiwv;9OKKN@Q9-6(izd^&S08q!2(8`CS6%98d=IB z)qAQInFPA&Qk~jQ=YT1^5Bke@JqX6mm#C+HzK_-&s`_gEJ!^oX!*NfkEB>VF(8qwn)O%^NY z=+Y`_vS!QC{H`MztgJ8@q|@Pbj7Vub+qf}`)|s9aPvMO@xy}f>@jM{G<2J7A9g1NK za{oUC#`?crMMQUYzdDViS zkF~jY9k$46BWdDfAyxJ-vORCq;82LokLXpNF{LS&nbtgdWYYsw6-r19Llg^HY=4>Q#rSX0cI}e5wO&_)Mu;nx%iLq?X zJ}Ov(f+8i6cqOb%a(_(e`WdW{z-7_k(&=558vemuYWI&2k2d%Ho`beWurMT)axtKJ?a3zIr6W%BF`K-^&Va21QZI@>ajPuZeDZ$Wex}ll@Azx?oK`|e+$z1A zL{uPZw%&f~ULuPtuvJ_%AzJEn@d1&Gw?=JOl`{$qTpE1@>i6PeVZ;=*);}U=yrrKs zEl>#ilpD`m7RcYBCh&RtqL3U$eXsX?y|(>A2LOsNckqfHe(ZhNpdWyxfLiM|m`jtP zkb=Um5wcw&Nu<*b&`u}s4aWA0n35Zq^S$*ho6L+V(_h$~a7!d{hPvt+LeEO7E4TA+ zCOKKbwkuChG)Vv|HhT|Uk$g>+U$zn;m?x)Yh^N7E(^!q^a4a~IOODtbVoQ-HkY+nj zXyZxD>+$WGz4|pUsKDY`d3NZ!+$GaySh0LrvJ41;D&?Zsy6qK(e(6edb>!VoV=5~2 z&ro!#oJ@_?-kT7Fn-(i@mw(k5llU82sV*gs(p^j^N0ZPl zyLf0&QYqxJKk%!EkSaAbVa5cbhg5MuCA5I|SJ;rU2Y?M7!qfuTP$L;QIL4)*4s&F| zgvr;u{>%B$9E@;}>l1}zP7 z9WK)pZ#oT4shS|IZK~KeKyzkgC`O8A@XJb8q9X{12TA+qc#zm;-ZCFTlWKZuLM=j_2(J7szGy55 zD&}g#@;Kf2{~<#0xLJf}^;~0kGVlLGHuZbGaYydp*yrQ(n(GiCk*erdHi*MUxf1&R z_V?ZDk1E;Ui^{~S&mooJ8G>3hR#C%R)hz84gg%___amUkawYMOkEZ2TV3H88#Ba?|R4)Qg$%_LpOQ&t*itY4%B$#~Z zduFNtIfEf9RNGontdo=KJ#f-!)WU;!s*J_bTkjiDI3BK36`2QX(kj4_^p4krt$xJVck3!XSSQ4&upv2@LQQDogF&@u|_ZD?`0#XbIceG5|tyFt>_LV6DELq zaH9H0lqX6!h*VS{Vs%1;FTu3RVIDEhVf25NzUu(eZpYS9GVqBGisqiqjh=j?{bw& z(RAYvOBEL9d-_op3{Ul8P!aG2;1 zmpWrWi0?}G4b5j;yq2l8Tt2c+m%-!j*5C$z@zF6N##QB0hcX+zk^=t4?H9?jPw4cH z%Goa-uX0ViWEdYvGEr{-lU(Hiffm0SO%x z%9`si*3;9=v$?OfFjj4*g@YB~d4^;1O5-+5TCIkviHo{K20eDYbd?TZ)_bAX@uTQ# zem1di0-Ki|QjWl_1?)L&WOa|i=bPsnQE%m_bP$&YFf10R zxBxk8T}PeW-L9z|;QTV>X~j9XOT4(b(iqSXD zf9Oz7HYb#}BmhM~J6ZYfI+XW+=uqk~jJqTjsN7o)IUL8ERHcbfxj4NfYNxJsfqMq} z-ZXF7k7zbD-Ci1`T*JB!yxqNK{h>7*zzhY*TeVMjpQzq>IdHWYAS2UOn#dqY zRmo`PjK_@1LXy$6Zz{ZQ%&IV(OXb=0oUt>3q^)WT&vtYL+{wHCLXpoi$7@GAdA|S{y+n)wwfv(}AXrZFSB8m=sW23N5``DOk;l`!!bF%B z+0><2;v4r=0ejAP?-8T!Z~_BZ|Dr#6RaVc<#zO<)a5%^l(|_idaM1FZX{)9aoh;`Q zq!nRIw64cCu9OlL5$bZ9dnn5Uv@(hR_imK}@BhNB(k6llYN1zyH(OtJgmC)aLO3pvsZDHt&SLK#-gB8GZxu z?9}e#Sabzb4S1@SX;=Vv_jiTGwu?)mw2Ju=x7We%T=Xt2cHOc9W@|cXyEqh=;Z6sS zu^)UZ{7RqYxAO4Q-Z-SLN%+Z4&2m_9KM8;(xmuHGU#hXV1%kJ}?HiI+L+c$MK#(Bc z!v6PkE86M=y~ryO$MiM$i?n_1P4{E5w~-=`gaTr%FE9IjiH&3~DGMF(nIy>V?5)a_snv;WXgj!92OI-+{3XH#j4UUZ;269kB*DU%T)9&ztGh|W(#^-}R?94h6 zgy2=DY?d$fy2uk!-@Sx8iP6#Gdg=_S-r^h)dLayifFv%P0shlTVeW>_Rt^Iy5}7=?CjE zH~&lK)C0=s*ZQ?jq;Q_1o?p`O-)36DH-12ac;#LHPt`1Sw?cldl`*j!!AidC#~O{m zEb2?rs%>_l+0&&n^z8H&9yx5(sGFd~i9uxPd_wZsImA0CB-hRBOV`5m)3!Ykq$yJX z-gCUZt`ZEP4|me5#=HP`!C-5{F+cDEx-f`MB!i6LnSh; zVtW9qwVx1;rhB}tUuJCcv%V`99DwXu5rnE*9LHL*^9*&|RJC(oaiGgpUkqrFn!1TdraN z*G^MoAuN~CnYKF#L6q0EPVNow=!JEahX^?dewvZk1;G28NrMI^wrmjYBp35~ScnAd zzS>SBypLFXR^=b@1aYlWJw?n9*%vj5Gr?+`!~;h7cv9!cm>+d}I)>Oh?90w@jAEGr z+j6o1Lt5e9(9b}Xu*;V~pvs4xQ8&Tb^ zOmZB71p-3X5f7Wu;t$HDSIwS!P0CI2=EY8Ij1&SEBVT!S%7@=;*N)UdYQ0<7Ri>XH z2*5+r6~9XV(fKohCtM2Zn34b74^%J&qlh4Y*-5+)^(@G98gxIl={R2n@F}?^b58Lt zNIEUs&sHZASA)xD>v2Axv+VB+g5S?TiiVqlac_5xQZ4nZPg|IpkFxXUSPzg%egjl4 z48nf`D!d7@g}wdUMfsuaX#=Zu5a;B*}V0%Oyu)-+T%APiVa9qA@qKOX`VJ+z7+vi zRY)aB;lHYV+!(DOQ2R##AYG*%1I%siYe=GL`&R!h0m%jDxi0yEivP(d{C*M?E>(Xl zHp1hG+`F^NONW~`MD~3h`{7rVsLu@os#Qa`Dy(nC8lMihEf~-1AX)HZ;JkD}vZ{$l zZfUfLbNw9Ey7$6eWM2^4JEP-D<5X3?DILZmolaMT2mqTGF@FGd-M2iL3MA7aN;lRFic+|%|s`bm0JtgUdDh(nGz;dI}bw{5X4ICcaR1=t_p~|Qp%Gf zsD1K{sTkm+2G{HIp~#@Mw}tu%k;6)Tr{vLTo2H-R$R0HLjy!JLR z#pl*&c{MjAVA`EI<*&ySw$8^j<|7}Iu1Jc$_k)Z2?7bVw>vu?`!q}77tL8nRB-0o`(HhmcFJaC1fEoy44Q{QRD8qZ;u1*&QRLsnm1S;0HY9R{9BB@0 ztI=S#zwXBltDoi++b_Ut&-89+SQEEreTl?pt8%W3$VTD%3(aIHKk9FwiIij!OSg zJCh*f@E6({kSJTOEa%|EW~hDkvrP_h;!ew%q=s2G{#NDMfFu8a6&3;)v|OnY1NX_+ zxZKu6VMgKs)xe970eB4Q#oE=g$@U)-hm8(buu<{-u2G<;-VRq;j!K^u`H)gBn$__Y zKOvQWdb%ucmSeR%-{IF8fQ(C3V6I9rLjDs5p@hN>2~Prs6iQ#uI`3FU;{jFpAE1y| z{{(};a7lT(IblDuTL4;~n=cw26}A&~VNhkA&7!Ul0`zN~TYQO=mK!bLUH?K!Q%8g> zSFxp$7Pgy}QpYRzm8H(sbw8z$RbyS`ZRJ$G#rZ)pwODNEkzVqDA-x|H71?q& zQbZeOX)`Nz6KfeUL4_nyyE$a`4Qq>+fEU>P7S*JMW= zD359wNyM@zSSl|r0ogCoav0wV^xJM8vR|U|q?PWos7!X`n(=oV8(3%d2!ZH3gJw!!kNuhzi4sk2CO z{TvQOz3`qg9O^j&5-5rlfdd!?H)k&gI6x7foCb3`KK0wRvz@CHv7m7Jf2KA__3;N< z1xqi@nDu|S-KEcd|6;P)ULUDWvqUqAvOPDXV{$xY)z%jnt*{-nb>uqUMO~hlr6(KR zU9F>eTfO(~rbq9~B-(eC)@nFiU3_yPu1e+#&nV33R^?K!s5QR@l+>C^;eg@ia~>ta z-+09#ByRDzPwu7SKy3u7#VA;J>g#B`*q+vtne~_U&*So1k-I|SLH)6MDsub4VBWH* z#oK#G(J5wx`%l|1?$yB4RWqsom};Z;t+#{Ysgl=S)mQLYM?ej~^Kt_8<;?#cEoZSfgP zxI;+`(4#6ildx(u?~VJI#H#)nk{c^k#15vKS7B(`b!tA(I z6b(7*&zs>X9aZW?Egi?( zL)F?5hjaau^TZ`HM8NK~%2%T6r-EjNSs&cik2vy{eiLvXBts3v?{AQ6iknttRR5wh z3=#E3=m}Dd?)M;6K)S3_#vaaTW#R*=!QH(aLc{NAJo63ML96|qI%91N3_USxYV3Vi z6aq&|gug6D+%1W~Vy7L;mB1z=QT;7(MzcaXUf5WKwI{aw5NjL3*F&@1wMva@=+^~9l0H#nsW@lmh|?KUqD=*XNm~liv%P&qAbI1 zv@t?hpohT+)7kA1NjYp{=lpD-sWmIlL@P?yAl6Pd@gg|HpOjIRxx0s(WEfE2 zU{r(9!V{?i-0qn~QiOiIrWj~o@Ok<-qU2`?2qQ@UsL|#g zI!=4?wI6}2|G#}@{&$B2 zxLDToFdF|RF$cr(LD<53#?SWqr}M|h^v44s_6J!I`@P?{7k|Sij09z}(dP|MUoOAO0&a=l_UK=f9#yfN!GoT{HXlwe-g`zvbLGcM<=SwdRj?@bdux z>mbQfAhOH7{9T^)`@;Rln#MQ=0-f-Wo7v9d|6=X__I{+158ot_?u!36i|V%wpOnwt o|9JI(d%sT)89x7So0;y=5gum;xFUoFKmmUwL}g!pF literal 0 HcmV?d00001 diff --git a/versioned_docs/version-1.24.1/guides/docs/astro-lineage-view-dataset.png b/versioned_docs/version-1.24.1/guides/docs/astro-lineage-view-dataset.png new file mode 100644 index 0000000000000000000000000000000000000000..00d8810f5ad6f3f4a995a22b732b287c25f9b60e GIT binary patch literal 42424 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 u-+TR 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
|( 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 literal 0 HcmV?d00001 diff --git a/versioned_docs/version-1.24.1/guides/docs/astro-view-dags.png b/versioned_docs/version-1.24.1/guides/docs/astro-view-dags.png new file mode 100644 index 0000000000000000000000000000000000000000..a3b6c37c9319d0ceef6041066947d2638f3d9fcf GIT binary patch literal 118762 zcmeEucRbte_cvOlRP}C)mMWb#)go%Es-pG?A+%L9gd$?a>d;ovQdG^>UP+A@iCHyT zdqk|*JH&`sF`o4M8{fP4bN_D7f6pJ!FAi?baV`|%*SYNe4=gQ>FDUK9M#nHHPzJk_1#_V9Gz|H=mg)pysOeaqI#-f z)KO}J>3izKM^BSjB!6BDiIsf8!l|*VTQ>0h?hkM*_RJrY=$`{ z!6{kH)#&Z=P5tzd@SoVm%n?0QODHP3EMuy6`g_-?f6x2_duLrxCX2_T+d-!<_m%Np z@`)?&`11MH=2d%$zvyj~NwSljDjO?(AbdV+qGq_NbH%l3| zG=hFUn?;;eM7cARC>f%t$C>({9GI{gE7J&WYHOxxr=vqBOnYXgqYrhYJ4$<^r+v6- zA3C}tQ7`G3Xy2!4pS!6H|CP!FPd)Nq&kVA^GO8M>X=>8GjcnX)ZJ{0xuAa?Q1|M2g zct>M1PcxkdayG6m;*XxVKDHJ2c5(YvgigU*j`rwc>-mV^+r=5`A?K}l`CmEYXwSc1 zOI+svR~Ao*;$<@(eSS4pcUyiL@f+edE-SI{^YbgXKe3ZDynF9Ii_?B7UUu;Gbd!^i zfWzV9@LS@p?)DOrw{PE;xN%eB=1nnL4lxfOsOKYZF{sCt|ET1@>bYy{VdL)T=IQ7P z<^NUhqsOi=PsPiZe>L>qfB(@>TW`mIw*>Y0&tcI9DDf*rLQ?#O#DCXKE2{A8t(?B2 zx2?1JT}Kxhd1!4YNz2G8{44+emh$fw|5VcK-z6n)OG^H^=%14QTGYhD)?Lljh1RC0 z(!ZzXKMVgk@jnYHNc{8lja~6eRw8(v(=1Dl$lPbSiY3cU6tO=@$u1 ziD%UZn^r?xqdcMnFY^oYzq}=K>;!85L{{?gNgw<6+l2GFdL3?d9ilI9rG5E${`_MX`&mi>NKp9xxb8*jswN=V@X>#G^(*S1tw7F);K0ZYM4ih12<@BMRuU#Zz==|iwF-`el} zaY*fS!HY+kNp`d9j{nq$e>IqDNXu!;BG03KX!}KH_{$TLxH1lJUF#42atonF=d=Gv zgI^6c>jsTMy{tYQK6+twTF#8G#Ri8CiC>;ZrU4%V?n7JuzfREXc<|~Q2?C_;j=b}9 zNjck|S(U2ueiJvFO^>p%M0|uTwDz?RSnj9=qaJBQ3taIWAxk2)};GkdXP zAB6I)f16p);_6D?9p!x1EhXzbm#^(FnRkT0%CDu@7m)o@xa$c0Igc3*qm=M{{@D<$ zTsws5>;#nHJHs_5wzP#1dSCu5;$`$k#I@L(TN4GF{U}9}URytNYzr=zUJNFjV?1++ zjPidCW^|V;7YSQqUdc_aCzw?c&x~FBDx!Y+FzGgqRcU8}Ga3!hk90F&b(#)L&1WN) zF8`xO;15#aINdxT2~V4Sh-e&R!)I_-%9n@~c?7z0x9i>pgB}8=wL}k*<sD_KYjX8XWAu-kni&)5>7w0Xqg z#^?smsH~7dW-#IUq<{c8<-sBH%c7|w<}urv#C;Uj;%>>ZC2l4wvSswH%)G}-wPmEJ z*Te+>BaB8;0S)?*1Dq32Tf1*Hv|euGUflL^qAhp7j@kPYhc%(EA_f!K+d#x0!5W-K z@0cKR<33cVSkYM1o5l~|>W5Ds2$~1Mr!+&GV&i1Gp6t42h}oV0M~cxg_(lWt^twZn{_#H%L9VN=bmUH$;Qv%odPq{+;Xp zya47t4{H2o5;n*dUs5%QCW6vliUFqV$W9hMyu*}WLUuVrrM&Kib8X`BuEwY*a#9ql zmWa<4>(Ss5subc9@Qx~eQdjmnqgkM^bhGbnt@7aN5%%LDUuTmLYWHB&I{{#2R1>-V zBJWW@lUbX{b9ICpCwu-`HE1%LB0d}UXxtu9AD z&Rn0>3f7Y-iqq+G+I(pxKZGq1&YVVq+J$TL`13+4Io|tj&i`SY*H^)EVsmubETn>i zUMK0F+Eoc=ZH<@5(FEK=NF!&-iJCse;4|P}R#J;pe!w?o!qqn3n~KO=alTPdOPVH0 zB=p{{H^t@}se)6^PU*y4^qW%0f7@s<4%2Siq}UBjl=W(vo6R%87J5r#M1TXIq#?ox z>wfy9+)~;0VO$agCG4K<|C5&fdWrGPn}xydj24-x>mH9ST4E(iUxe8K7pfho;XLRf z3~T|o5HK~-NERyFTHM3U(7MH)?e?_7~Jj(B= zm^a5O+ub3<0e7$QX<)MR(qO|Tx!R7x4QKknK($?b;^*6$Q0j!sO{WIVPYak+VF0cZ zJ~kh#WVX`Mr$J~ZyR3sHW=KzF1rbJ2Tzvlu`obX+m zYATJtHQNug-gj`Vx~%{;zkX}yoy$z)sOhJhwszO^KKR8i;PNbnO2tBa?b|-t%eihR zW8lk+z8AKXAp}f?NuH^HyQgIeVkb#)`#bUWroY1Mu(Cy&j{M-47ut&xVI<})3oPES zja%CJbBo2-hX&OtQTdz714Nw|QR~ug0aTYvzftbTJ(+DkF;=G8-oaP)OUjlo7Bvsm zCIj}`pnLc;=Ut3bE+x2*;HsDkO33Zoz6io0hfH8U)lUzry4p^ zyGtCevzScwDli`b#ks5;Ip#JvAIgZI zgY=1>OcS#x9Uk$adiZT;Y-%fxJb}&HBsUJWy-44q8I0c7*M!Td^Yr+kTy<&7DLbpx z_pR2BedV%S911c>@XZ>MS^eblJ?s;4$U~qB;JmUAfm17RrN9e!8K?^0%Yn>1sRJuR zk)Y9?Y2m;j-Z;j(ao2m{5inxDe@su2o9}X3tN5-HuS*A0B7&FYPN)TYXc=GoCXu-H zjY=eHdWi;@D=C*cbbVjw(^;IXN~Yd`j8>yvYU*RXh6?mBDz5&@>usL^r8+Y6r{vca zH-^O>-QZ10JN>n1*xxXA?Xo!4VV48s%~5TDLI|q5!+v%tO}zZN_RhOe@5zn6ngbcH zaQXHO?KlCESSi<ze)Kl8`z3uv_-n48! zGimW#Sft*Lzj1AjT2r6b-YDPTSNRw_NC61IYLzAp!F0TV&0}g(pgX5!Y<8Tni``g% zuNa>P6yF{{^U3RMOP`3kW#o=39H$t_(DuRFv6>a(giFX6Nk{-3hm>vki*4U`+_}U+ zWXPt&xyF}&=0CbrDBf)XD+Ur~G5gYtn zoM6tq@C8-g19+`?sW~d#gY?N^OZKM?2z=ST+X;xbtl?gL4@o!mXIogQk3{oT^YIQb zit$m}-0+=wm~dWd9?P~r%s>b8Y-G+$yFCuqG__T3P_8-rvxxRFOf+M?m9A!^6Jvq{J0$Dg9yP48fSuU zhFUB+DKa`!vVwB<{po-$-!yI3@5Ko*6OS|q6XU2FIIebfyWv2k(GIExpFgg0Vau*p zPjzqbW$82)zCjU@_~dU@^bkD?tO@WW-1*2yWGHuP>d!Z~fh>UDE*#P2Gqq1bd`Lpf zv^|9{U+`RkJ`Eji4&TcUi-^9i6FE(+zp?xIvuXZlz^%r?a`xu7VRb|my%R4YDBX#| zlP9Woy_ZmO0fNhQ!~~6G8>})pgvIJCp^($&nFYOHLU~57%VIq1TY;>}ygYUm9O#%U zk=&=Kox6A83y5`?8-8S5V{y8=vzM7+6%(cdubtM~87+2AAgvf}cBOmMBmUT1d4>vk zK)B!KN^G<2#NJyeYm=#Z0J!?jUE`q#{8l9Uq7!QUd~ppncsj77s!A0eg*QG9mr0>s zgGk1Nt6U$AE6Ry1`paq9|l9>{U<30Y`zJ-=+2s?r_aNZJlT=2Nu|`j zjXG)re&8|3+0O4#*T@qSJUJ(q(xW3hR^Mk9Hq0i$UnY4@j6Np2Lwd6x-59M#V9lyi z=DIVYAvmz|M+*JpnpS1u&iuU`>zXI>0p=zFtzl!Nt?*<0Ut(6lE@JqN|1#Acw9+v0JD4%9{VK9&n?E2yjeHa#D@^# z?8mwDDNw|`5c+*6o|6;TTZlC+g-Y@cg?X{HgRy;NF&LU{dK#V~Lf#FKLA|4Z( zOpNrFw!3RBQ)AESC3-{Cl#D-k^?!zomSgK95YEbFV(4n4svQ+W{HcX+xB0qn;%@?W z>o7~D2}}gA!zh4=!+|go$7&9g0B$C!2G*BpRz-QNEc6EDHrZt*kFNrn82I&!o?L%v zf04!FJ3WQ%hY2$b5%7^!&q3Ip*22E=Y>w3)rgRX7E*RS(ANVz`XVeQ2UVF6`QZ3}+ zObPM{GCtiW{3cfMA&3iKJ5H7sWAj?FT*{U>j^1&tn0}f^Y7cK8y-tuj3ZTo*>pec1 zbrhc22BWdGlhZtg8Q4wU$PpN2#;9%M6agI1NBwFy>WXx*@HdQb4$>|+6JjnwVlZ%WU_3GGcPZ}EZ3he*Z7@6?+mR)P14!Eq9JR?>zPhuVD3LF7Apz~lb zz!(mnXm^X?ksFg|WPSZ$x;@hMxX+j>7Gw?2`n=}qK^Wx(Y4>p;<(E|T*#1y|7vUua z!-WMI8dObOJZ@MqvcH@a60|SbwB(vlAu-Ly-B-L#<{E$_TN3P(14O(dF8B=}Fn0Jb zzDFHsJPm_V?tPubxF~GZhShnfFUMsif)t+AF^Tu@jx$|xMpy^dsh;f*JebAYUi%T~ zHK(Y|J&e;)&r0^n#^%A&Qn%ov`(N&VwU+iC9)ZQB@Kv5v zhyBg%>JRPe%QgY8juOsgZ6aVDXt(jlLtRxb*SFUfi`AB{Zh}<-u{lgEg!B^pNZ{8b z!i(dClB~iH*L4%^B9(TX7Km6heeZ@C3+6VlJ0r=3B%UgWxaIU#ai=*ibF-JG1uS&nM-r`ozU)cMN<;oyoAEpW z1rZ)8k%0;&fh*wE5Hgf(vhwOTyZigmeb1?pLP$?xYv*%}qlmzzPS8NTZ!8o)>d+ znzGg{I7D%PcCJD9HE1(Hd2xhh@;-yK!S`n;#>x_rJ{<0D@cE+Fm! zRuol3lT2hx+euC4SJ#~dHSbBeC8XasHD3t1{pqZN>DRuppSZQC$|%kTrJw}i6`q2! z&RLkj3I(rJsS0QCyF7ZZPU2JK}=wu;Oe5C+twvOo}z`msz2m*NihzYKE81b1*5n9>G#R{TII;!Q5p-jS4 z3><>Nyw)&0;w`&(wgz2zI0>IUvqH@16oZ7Z*s;aPXdkMP+ zyrH4mD^AidF2OU!P~+OQv-AA+%3oa%S6gc9fYV<)P|8Hcieo3z$E4@Uo>mm!WI*8O za8J}{vC`qI8=nlT_N52wC|Aev1_4#RE{kvSbPId*uyq9fVvspwk|BcR+Fg(a_WyDG z>9U8MGD`{NDSUHeFU9^y+=CJJTiedUSEnA-NMv}dF58UU>p&1nZnY5lC#{))nAzNb ze3ALvf$!z*xot)S5GjW5;4MSg0UU6I=dCvKGt2JIPV#KZ!OjD`j&@B)B9G0cTOz}fWbz+fAb zZghwRR1r|#nD)AKKhP#wlc5-|aWo9N}mLHQe$_(gdWW`q7;N5PG<+foYJoS^ng;=gjh?NO_EbY>jNs8FwR&SVfsoTx(NWs{&`{xrTOf|dcazj4b z9)IPOw5FvrXL-RP0)=xG7~}?Ke51EkE(j_Hv4vV(rtZ|ME^QT@of*boxkr<07fZJv zS+vb4PH%9mj*l@|knuE!gCQhWPkB$qjKmaUjdn6|qc@CqV$0}L9#5Bl)BDL7tV}aS z$ce?!<4X4rd|C!n-LzWPB+K(Aw;k7?n~mvmIlu~gnY?ht^=RME3K`FWX4t|$(4mMdSyL`ca*4Eug>AvkU>(4K-&xL z%8XEs3!7X$xFWFFUaznYS0k+WTWZ!w>nBxehD2zMPV#t2N6j%+Z|fg4=fye8cQwu7 zJo)5w)9y_I)xQ(8m6_0SGD3Tw=370tt8>n}BH@O=oI?s>DHZX?b#TR}s|h&b-(lrL z-gEG3ZxabxjpS*+-;c^-VtWl?%VaPBqEF!1ShYsWk=|3KgLr{LIKuuG-PR(>N_cFKFvApaj#_h2^9FgNfJ zHTo2;nXE;85a8 z7mDDQ5#|rQa#nDE`?Y}WEt_Z0VCyMX+B+9hI|R==&}0Qsy^vX^#y)gwt2!0=W4%fh z5Vf6+|K}UgD zKQ{nje+pX$Z=I3MqV3($7Bf>Jn3)ia>ZgkDGiVt2tS+J%Y*Jk*izCi8J(^kD6BHicnQ2DWiRHTW2sstpYIK0@7tzgy*WyOV)QgP!<1pOJC!$v7ar= zCmTad^Hjn7rrjR8s#t9adC78z>O9E%`5vy6Kt9iwd?c`R0dE8TYR~F7!WiKXaUyKb zSnP{imS62_@E~)BBc#tOFARhI$9e12pBAJ;g%O5jpX8YKcad&zMkg!Hjz7?~hH)L3 z*N#rXsrKoZC>PAjD>(zydD<0PfF*#Em9Xpl#o+n|| zF)ZVW+X-+_1+|fLoRxZ8NUHQkxE_nBkdQ2OlX&sOMVM7D7z3&m(2lI&5$oLn2M-i? z?0M+lRn^*4G4h=o&wEBrFP!SR=3>-w95HjjYb#mx=|Nf>%7S^eo=A{c?F0VSTC-m^FC8e}x80)#^lPJ{4~9+r zqraAU`W)@!Nx*0~^ zNWt<*eiIr^xixO{=(iJMVJnqzhhAcmo>S@+it4->+V(8LsA*S0a)WvguNZT-6X$vX zEMnqniXKLP@o1-dyhB+PcurPG5Q)fEjRR_jwVDXAdW!0b#N`1q71#GRBqBx&EGxQ6 zRkN4mDId-ZfAwxF(1_G2cvSxq>Ye_=k=R_Kg4z24Uw***ZCVS7dFkQt1k+mJ#Wd{F zHxn0?_OY4)}KVbhNnJf|{PHIykYnzffx@m0WkO4RS#imX+g+`=Se% zpV#BsmNs3qfa+8IAMk=VpDPK`Wrd|Vz0czec3Mi*`RPfpPw^3%YX?;?32RVSL7M%0h+!8@#LucD zZyPCH%%`Cy_6bfXuW6OTAvsWhz z^Azv1tBhY$91c-fSXj>Q^^i$?lJW3aP2SVRkD995-i(|$baqsAY97{E(Z2Va)sWGS z12~Mb=DVl!QU8LdDPh~c{p_x(n}()xfK)Oz3f{vmFiKQY18fvVVV2n8Wx3=J!sYVQ zW#{YU#%rH!&78wcx=t~(WNzs#!+j%73|ZAuqN?;}$=fSUF^iJB1F0Q*D_d#{t91hC zVS^G^F#7#ixi5_yIT!19uEH@+)64TKZO_% zS(Jzl8R10)6gBzpw`D*KGcxx578j7mxfs=7vQb67{cW1{GYVfvv2x~o6@}T{k)3}G+nRvM&ZUz;8=eHJaFyb^k$Q26BVlSR znlzyu!&wnqW2>1GxSy2dy{1|hrw6MtA64A^P;&6YaJ@yfn$atox5sZe;E~3G&*&H; z+nl^*+G7A@!Oh>4gUJ z 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 Xe$^ABcN_k2F#v(5tDnm{r-UW|-}&+3F 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 TnOBz10bKgGjc*aO?>+x76iD}p literal 0 HcmV?d00001 diff --git a/versioned_docs/version-1.24.1/guides/facets.md b/versioned_docs/version-1.24.1/guides/facets.md new file mode 100644 index 0000000..2800c01 --- /dev/null +++ b/versioned_docs/version-1.24.1/guides/facets.md @@ -0,0 +1,77 @@ +--- +sidebar_position: 5 +--- + +# Understanding and Using Facets + +#### Adapted from the OpenLineage [spec](https://github.com/OpenLineage/OpenLineage/blob/main/spec/OpenLineage.md). + +Facets are pieces of metadata that can be attached to the core entities of the spec: +- Run +- Job +- Dataset (Inputs or Outputs) + +A facet is an atomic piece of metadata identified by its name. This means that emitting a new facet with the same name for the same entity replaces the previous facet instance for that entity entirely. It is defined as a JSON object that can be either part of the spec or a custom facet defined in a different project. + +Custom facets must use a distinct prefix named after the project defining them to avoid collision with standard facets defined in the [OpenLineage.json](https://github.com/OpenLineage/OpenLineage/blob/main/spec/OpenLineage.json) spec. +They have a `\_schemaURL` field pointing to the corresponding version of the facet schema (as a JSONPointer: [$ref URL location](https://swagger.io/docs/specification/using-ref/) ). + +For example: https://raw.githubusercontent.com/OpenLineage/OpenLineage/main/spec/OpenLineage.json#/definitions/MyCustomJobFacet + +The versioned URL must be an immutable pointer to the version of the facet schema. For example, it should include a tag of a git sha and not a branch name. This should also be a canonical URL. There should be only one URL used for a given version of a schema. + +Custom facets can be promoted to the standard by including them in the spec. + +#### Custom Facet Naming + +The naming of custom facets should follow the pattern `{prefix}{name}{entity}Facet` PascalCased. +The prefix must be a distinct identifier named after the project defining it to avoid collision with standard facets defined in the [OpenLineage.json](https://github.com/OpenLineage/OpenLineage/blob/main/spec/OpenLineage.json) spec. +The entity is the core entity for which the facet is attached. + +When attached to the core entity, the key should follow the pattern `{prefix}_{name}`, where both prefix and name follow snakeCase pattern. + +An example of a valid name is `BigQueryStatisticsJobFacet` and its key `bigQuery_statistics`. + +### Standard Facets + +#### Run Facets + +- **nominalTime**: Captures the time this run is scheduled for. This is a typical usage for time based scheduled job. The job has a nominal schedule time that will be different from the actual time it is running at. + +- **parent**: Captures the parent job and Run when the run was spawn from a parent run. For example in the case of Airflow, there's a run for the DAG that then spawns runs for individual tasks that would refer to the parent run as the DAG run. Similarly when a SparkOperator starts a Spark job, this creates a separate run that refers to the task run as its parent. + +- **errorMessage**: Captures potential error message, programming language - and optionally stack trace - with which the run failed. + +#### Job Facets + +- **sourceCodeLocation**: Captures the source code location and version (e.g., the git sha) of the job. + +- **sourceCode**: Captures the language (e.g., Python) and actual source code of the job. + +- **sql**: Capture the SQL query if this job is a SQL query. + +- **ownership**: Captures the owners of the job. + +#### Dataset Facets + +- **schema**: Captures the schema of the dataset. + +- **dataSource**: Captures the database instance containing this dataset (e.g., Database schema, Object store bucket, etc.) + +- **lifecycleStateChange**: Captures the lifecycle states of the dataset (e.g., alter, create, drop, overwrite, rename, truncate). + +- **version**: Captures the dataset version when versioning is defined by database (e.g., Iceberg snapshot ID). + +- [**columnLineage**](https://github.com/OpenLineage/OpenLineage/blob/main/spec/facets/ColumnLineageDatasetFacet.json): Captures the column-level lineage. + +- **ownership**: Captures the owners of the dataset. + +#### Input Dataset Facets + +- **dataQualityMetrics**: Captures dataset-level and column-level data quality metrics when scanning a dataset with a DataQuality library (row count, byte size, null count, distinct count, average, min, max, quantiles). + +- **dataQualityAssertions**: Captures the result of running data tests on a dataset or its columns. + +#### Output Dataset Facets +- **outputStatistics**: Captures the size of the output written to a dataset (row count and byte size). + diff --git a/versioned_docs/version-1.24.1/guides/inter-dag-deps.png b/versioned_docs/version-1.24.1/guides/inter-dag-deps.png new file mode 100644 index 0000000000000000000000000000000000000000..ed6d3764506ffd91053f680d99c71dc82999f44d GIT binary patch literal 10367 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%0A!W7t0M!MD2@K-ZG1bZQq`vyLzK-g_#RpspV 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 literal 0 HcmV?d00001 diff --git a/versioned_docs/version-1.24.1/guides/jupyter_new_notebook.png b/versioned_docs/version-1.24.1/guides/jupyter_new_notebook.png new file mode 100644 index 0000000000000000000000000000000000000000..ffb1984c2819d9731a54691f9c3680899efd8981 GIT binary patch literal 10020 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
}u68w-`L0VZOtv`^mmhE8vGK=XPnT_y3O|Ky*+ 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 IC}vyuU_pbx=RUO%n@l^ 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 literal 0 HcmV?d00001 diff --git a/versioned_docs/version-1.24.1/guides/marquez_bigquery_dataset_latest.png b/versioned_docs/version-1.24.1/guides/marquez_bigquery_dataset_latest.png new file mode 100644 index 0000000000000000000000000000000000000000..6dceab526352aaadefb0011399819313946d0d7b GIT binary patch literal 32686 zcmcG$cUTi$*Do9^b`%v91XPF^B_L9yqXJSQAfXRUK}rIGbO_B(6OaIdQl*3*5J>1n zZz%%OLhsTIy_XLNn3CKbP1m03m;f+c{MhYYp<2?? z4yT89PeQ6|wVQwOTJhT3gp1lguV9{qd7lnB27^77IE>r_g8_SCu-hmY>=`sEm~%WF z`b*jmgIOMie(c^aKC8^}=kL3JK8U10_}6RAOfcBTKi`~Z0TM=`j(<1)*;g|q4~u9A z0t2DpkTZJ`&-1ikFv&EKMBFQ3{Ds_z$j3&jCboBk>y zT@mpLH7~n-3MHsIv`H{kYJb{*RKN$*P#)tF2?UE)d_*K((b<3DM@=e!drV*2={($5 zzRj+R$|r-TkWx_~k8dr;`C4;Ex!U-#l^$?QtCSuXTDevE8()+nLK&uv087x9WUtq z+v9ekX4IPoz_psA4g2Fhnh+`~v*PU5g(_Z^RqKTtcc23luPV96KEZ{wm=$v0vQ+B# z`~WZFtQYI|ti=Q{T02#8X-_?Rae>)nR)kqd$){*SqpKoZRA5tWGdE+=E!OyQS#^Bl zOuzn7?SAU09_t^$17eI3lAXc)I}bDTtew8-7$Q^|EiUl_N-K|Fa17{grqnK!9?)wr zOnvAL3p1w933AY;D=Nuz>j{9e;a%!j&a_psdsBsTowWI zDcl*?xbBQ>VUW80sWMI3+l%`_+;&8>j_;R>bV9xyYRB;N$bOCdpm)Efl^X0Qw{w=` zOk#0u!NkiMxOf74gA50$e4=3ouMUd)!&uQ^0vdvYUV5h>yfAE2`$* zB|F;1z%@}|(dk(3iHJ9*!*Wy0gX={cD|xtcc|H`%9aR0IQ+dwOD-EPU5PWQ^LY?P$ z6d*pRE7!1m>!4}Ti%Rd~qfOzfxYr{wY@{%5_Lp2rTW*qAL37-jEqF{2`-a<=tP1rc z#o9rryEYe#z==w^x1c$Wc4~ELY@(oT$f1}%m5yz({#1nWxSEkasn@z;Z!>Ul{E^wu z1xMi?A2KR9=Xwe;FErNrEq~ePqNkkRUlK!tD&=vYB|_>YI8CY>I>}f2=&?n*@=i8f zhBt$^IO7pMvI9_7KoVutZJO~ec#Q%u-u?p@H|vm_G|jB-2fKz#9y3y z;BQr%jb$ILsB-NWGQ75+sDrpY)&Fd?J_l}$w0S>?t9_Z3AdVJc%#n}rzt^C;9eY)Q zwo`z`xK;*9=%%4Agl$*Uu#>{7I**EC(;5y4i`{>xfvn9^JCak+x5?w+8U-k)a8hw7 z(aiqv1eqmvhsL=%&z!lrxfZ*!U}I#g^ss!Zw80oDjo|ox`wXBwQ5Rw~{s5^Y<@#|u z`=$hVQA*!}P?)voMwwXl0Q__qC&e!8J-efe3X_mb2f%?C=iAmm%*m(w9YL(7<-r2=xLSx#3rqrHwS5< z_`QJURmB~_5LA&xSb8{a&k$Z;zo55OJNMqf-8)!IBd}p272cpSz&R(n`c>N~EtPmi z*q-+}b%=(K9Cvg!AY2N@~aoFAE^R0f@U-1RXC3pY+X4VlrLHLtMK zYH^qRZaGKG-$xdt>Un{^g|xAv+r@3-7Z|;^S@;6&5)Qf1)F*Pr(DqZ;NLt!3BlDjUJNX zuddSY`{f&yeI6O5ztEAABpS*^YWwA3ty3~)byYf{ck;48oZ>HO?WAs3S*;Ih`hEC| zxRz#gKw`k;7MEtJ^@SU8)$UOMF5*#~Zu^=?0^wI|ZaK<-IY$q_2DSqO4)$~7c%PNf z6gK-o-r+dQ`A3MR2aH+u(brP+N=_Zy$bGA+rfQpx`tHcTWVflX1R3EPv%j7>PG&Vs4omz#@a< z>y%L;l~XK}As>*^v87T4ZC)LHL7}c2i}#m85iMpGIqi@B!1&0V*qdONpgvsS%g}#b zWZ(h6NmV@Ilmb$z)F$D5wsS$P!DG&jpK1zBO&%WiIr~sm69E%Ol;Cnx)l-)O59xm` zP66=Sl4S*F=9G~2o8_A!QAaA9RCRIU$lB_aFH`rHf5knm4Kls6a&o$>d+fy<(2-Zm zeA#q~L?{>QKyYw2sgdN0zH(Wm1%82drxr~qNY|d|pcdVVVWPI6S>cRJ$5rmV8pq}}J`u#bjl5re+SbvwCRyqh3JzGXUN@Yr z<~sLw|9IxUQ=tzOZ*|z07M(|~h%qDG9xGk`Fd;n=Bky9j_i=E-31E_+#1#MD=9o(N z7>|vm5?5yiS48Kc8L3TpITk0^ek<6e*FncV0~|#GxOee9y@j!A{e|n%h81P6In&S4 zrV_u!8=p5Ry7_g%x?4J{ZzXRPyVP@k=bfOlpo9!5}^V+s_Xu8>g`AF4;uV8BY5P`u^Al$Bzml zxyBbk?#{^Jfx`lFgSepPfRtqMieM76-rfF%_Pb`+{dm}b$rql3zQCraO(&Z5iM1g= zrsKv3qYDuykjF#FFF{TBZ`Z3xIs&V=7e;WyiDL31mz(P8Fq9{;S@ z?kv@xz)vv58JxCd$Jy1q@@b_=#yL-YCwOi62z?L7-EDf@f|gkmjLU1pY*UGqlcrJjS21rOl^GsF!TBS6-9x5HamgmyP2d$i>(W~tl_ z2hnRW9@EtXgBFTuj+4ET3?jAr9@0o+t2f_BU!~>zYEsTsCDaA(46_0&PCTQ}2gKy2 zIfF=5>WCaXX9=Dx0H?;5xC)&`YN*-o%b61?}mMASH>w9kU2yr3CZ2vKNwNYfPm^K7}Kv{%AVm zo1(_zEAs}lmN=+v|G~YSm9HTqEmqP{jV+k*w03~%%Ke*DO)3l>!A;V~oV#U=GCo+F zCq48&I><`v-iG(wE3hU9(PjV(GX?~2IIbqM1a=gr%N=HS#6xO=8cpKUZDn+*5n?go@+nWBv)K6FFf{f zcx`oT+0S?w>+>@F$cG<OLWyz%PX(4AC+pb-v%^qp_~L!9v1EsqE5J=)DIZRy*KE*`>2Cw`)A zvTGmZ$*p|XL(_rIN$zfy2s$SWo*JlO$Xwm|dy zJ=)|GM45_(YUbcmYn^JZu2F9t!?$JFS#LQSa?2`ubMS`8ZNR;3Y~Q+jbi`%yHR}`# zudvLix{m}RImSM(p5{4(>*EJcz-)fX_U z3qvk)sHOx0jjEw%HWI`F(^=&=y|Bp0TI5xFRA!yut`)kkmH^*$yvL`NRSS#j`h$k_ zj|g!2%D85%^xcN{4zA63SP()t{kPrU8jU!N$WdLlY@e~6Xe|AlZ9g?r!?6+Jnx>yA zaIwTGem>ZIsF_8&;7g&-^up1~_M#aGx->!11;U5Ba1rUb=Ti59-(azsiH;v0HbZni)GaTjUQ?|*VYsxLyyr{a7rnMh2_-gO z`fRNhB9%1*ZTTV*EOWtK7h|z6Ev-*B72SC%j)cKV?=vyNU=J1kTQvLkVyP0Odq?-d zKHL0F6$t!J8=%4@|6KFmQ~Vo0dopCvX&^!QA1OoOBZn<}o-P~lCv)FXo|&C`dPh0C zpAVwE7mHhk|LhlrHT>tZh<>~9)t24Xer2*XdT?+q7po%IW|bLU;;&fJ3amSqtZ#K# zGR*9S1rrD$K1nufBL9AU4Eb?q<{6{hO*up{(_P2URKAR%&Yr3{(%lkE7MSZrtgTPIq2<->+usNV8f1@%%v+^ZBm*t{r!En)R>)kMNW>VK-tHTz4n zQfzt-z&I38oz*oh6dp_cGF#UlO|o^K7>o=w1xsoZNpmW-B4fo10L;?+`gJzaH!-z_ zT5|2bynr6H64>V@D{7-ueFC94>sYo61Ln0A z(YTN?u{n-BNaD-A=U@K%`fjC3A4A<#^Foz{g3fKb^D7=EtS(sdXAw-vCK81gDdzqA z(w*KMn6d3N(?Bgo06iMekg`}z;@w~1R9mSB(_HH8n8Bs8w-2^|8pMwjTf-Md)k0m} zu@F(@kSp8qgxi#%$34qel}b0mB`?U<5jJDCvH~ks81uAhob*VV0ll8e9IN!f-vPyi zFU$>=hMrf0lauMP-kI=j-v^V^K0Bg!#f&2g2b!#zb&BSS`?3vTKkkr)m|SjNPS!_p zINOK&Oqrs%_WqIzl6~sKBzQJwLr3j$ScP!})J&hrZB!?D`Qrq#Uj>z+4Y*X4^^!|0 z5p#;DTlq&}9|pyTInUNDmw)(p$j|^vx7eB>0?}3q)CxBv&+LuY8 z@mpr+WInAlZ^vm3&*Y5`4bZtHmEa>|OXYwws;nAa^lHL09I4#%Lm%iV&8b3`HK~#u zeOfX4%cWDT_g02U>O+n_?4+YG$pkQg1@q*5hH4&A>M6Q(-HKYOW_VD2a^bSXTJaU? z7MaxKyyqFj6Jshn0LmbJrQ&!LUqZ_D2yU_=bY(MfWF{4&Lp+Jp$GbIJNnmK9uq$)$ zWj|}_c>b(g)yDdfOGQpq5S_WyP>i?(3l$Z|ABHx3dN|_j65b1&O@?0HAd^BfB!3lw zJ?0USBDBG4eL|kMpd~eB6C_O6D3tJwjFhhps~s-qXq(R6<*1FVtjtdlyVF9`hTTvu zos{<3g7RKl=grPuyZ${T13Xt0hyNiK7m!cL9SvAzBGy!=x$-MymhUjzwh@F#9P?^UY-RZg)`wj?(*-`T4LZnNZ?kDXq^h#TTkH*Ta_0$ zSE+*q=v88VyRAoqTDiLwb53ja&$um89II$AHkz1tRBH47)~ecmST>O`SknO4({{kv z#1hS#uwZ|c!p_*Zm4x<^IievC(~b;qXKLuE^pqO0xG{G|vgnZNY-j&I4D(~YKD)Am-1 zNvuX`S+>pWPUYPt7Su*bd`InC$iYE`Gr(`GB|JkyThTq#oNM6`DS1 zY1*>`_ABGaDA$|y!c*dkekmpaE|MwZMIW%MSK@`k-!FuE#_HyqM~++6+*D|aA{Ipo z`9&np(4scoK{vC;I4hLr>k&4>dseHANErfQ+ptGByy*KvNRGj&;Os6I>0WpTdXphi z@mqX{^IL4@Yne?ekzNt+csrB8%JwC*k))#0&`%EeovwtyIVOgS4qK+ut42`#(imA~ z=UBfoFrOWja=k%-!Otu=7C^JTKF_gw1c;T;1r-n+QCB>l1BB z+NB+1QEnDN+S}u~xx?|Om5=;2{eVnFWq?tsl~PiJSz~b6)B7{yGe>P1o+On|W+CNf z8G_gJ@Ijqu#zATC18)|F;^Cp&T8*qc9Rwc*tI&p3*0>LwHR<|5$Dr5*GYsj8p;maw zO$~&)+C-v9i!WaiW|CP*;K+40K{Xlm>vxRlm1;@ed?roi4l$)IpL-VtU;1!ZV#cis z%WC%mGkKkITD|5{G`zq$87|BoY}zkP=G*8x=3{p6ZuZ1g;e@*%jy7ct2Y}!2S0x)n zTuAW|C|=X@9R0BfZL5X8yU1Lworxh@NHz0&8--%DC1|nT%v;`|yYoJ{j0KupWW}|U zY63V1F>RT9*FnDqYd@XKp6zjlV)JYKLa0ziigLYjmbo6Wg+1uN_GWe9_(EH`k@fuZ z@0z`-HSg99q)44KL9QPrw-3XRQm?@3=gWG2+KVkCw#%D4GQ-B^zmmeGr}HM1rFj?G zeR>oan9VVXWgT&8=3(LcKGIcBKgM8*l^&_Sihq~{1?rJADd*F)55inwNHR;UwVjVG z?3qt9Qx0UkKN4h;AMFOLxvs0fVt~z`18}ctLYe#N<`K8O%&bihZ|g$N4iq$pTAzWR zptpd#^rjyhq~$&xH%o&2pLl_~E|3NFVhJd#SxM3Rdj{ZoluKWQ zLw*y5c{k1*pVGAyo^xX^Ypj9NOF52#|OFf3hdL8*KDYWC)|S? ze&moHCo&{?fkmxHg)|*<*db^d90n*C4nIATqx~OvFBOyuy{(zjWTjM|08gSX)$2ZL ziaXXr+OLyoLjv;MmK}ifs+oE?qn)1A?*~*-2}UU&4P-(pt&a2Tfk{G^`?vi=8d?~% zgkOTgo=vn+Vm3gK^)8)|6$u1eaM!h>DIq;G=$VGtdnk#by01DYC{OXDh_oz}(hB*D z5QXWKIZu|Wg*FiA2?3A5p>nrzDwo@@;!tpA~BMQEX;;DV%~6)VCN{!Kw|nlfkzB+>Bdx>KYJT=3fD{ zjJ7Fv?rQN=(7T^9-EgP91)Uti9SImGtYy(2k(AjxP^^M3>ehCTz~uNzfnRw zM47G_kTsm{{B!_|LPhB``kzl!$a47jkY?&yW956Q{Cnjxc48~tj{qQ z{TMzmB6r7yT=WGx^uQXFSx|omcx4y8Gewjpeehk# z^zZNh67mE(@NiCosP19s4Upb}wmJgS2xWyQ!P8O0{ia-4y@)@K#!vr4LLlrMv`_<4IO&6_?y5 zBlkV)$5Drfa`1r^@-p97ejcE14s~P}B9aYPIxvtMPw04=x-4z9rOnJAmfL~W!K?Ya zKYiJB{9qO&p4Hegpu9WB6J`Wt}QLLi+f%dJl z*PuY3czqZ8@z!va%M2j?e&o7L!UQuj6pUov5GM=lO>z*$=(%PfV+%P*Z6AQT+P>fx zitZ~{8!fVrZc$NQ6>Pc(#b^sBE$bnv?#fbcMFYWN=Vdum-rGCdr;+j;b7fA*G89df zSuJ=-WnGRjO~kIm7rY$S;|~_2Hs4d-NJ;g+cqZOG(}t+v0b(LS4T^yEXLeqVwp4Ol zXtcA&IIovY#|O_^TOy`P#@kSv->2*KB!yc&@Rd`Df*frx>HH*54~&&H0x3W_r=NRX zRG!K9%3L$k=W?Rv)K_=E96}Q&ty9FYAR3FXw|7n_82P23;IYb{oLk#1;s7zg!b=6Q8@ju1ka>ak}x>mP!eZUIXY`KR}SO2%cwSZ_=+r zJrV`>b`^v#j<_F2ZoSXXQo};lM3%N(@Z%aIEZCe-vqnezt_OcTcv({g8GYF26A6U& zuL|Y&&Oz6C4kAmB8nq|BM_k zisUbsJ9HWBfh>10Lq?@6-9r7d^WVMQ)S(ASJpVE5$Gno`f7Sx*22B2cPvI@3V4#WZ z>d(IoTQfzC(%7*U+#$^_qx~Wuh*$f*`SN;LRzYpt&LQKjpXXZk-=>G35N2B>kjBGl zRnvs{65oPGcx{$K5zmCqp3x@nS4|oLImVEi#de~EQw=p1j2jIHu*B;~rHu#T5kRi( zTAj9b!22iowkciyG=gRs`OcJ!_bYd++M|A!&nzgEmv$Xolf<$)h>PmyyBPVdt?MI& z*PJ`9IQtHh!XBgybbVyZCisJpp7tb@#B}pmvve7^tjmWIzXaCjgg&UZi_Pt3%qPC~ zPm)L3>rMiwUMqW#Y>#(lDwn@9;e3a&qi4xsL^7rTgQyiKb2s>E_F(29k`Ow`^#lr_ z>WJ&zm5{94*}MZqwSeMm5Q~7{4ddYWuBv6_&D3AEn$|KG*yym_zSTfJ&hz&3-HB2Q zJfdpE%y+m)N2Scj2IJS#Tt=~jdtn129Wy>mB##zs-*{8n{>Ljcl zSoT32Orh~;&ShwAC0LuPB4_5!&;@n5x#X<9iA>qH7;33YtZ_-w7@NYoq53-OG#Tas z;46^s7IUqTMCoB=u27h{36OsQC?Cm@)!^%=ex~#uFEIIYZ)*0Z}A!^bh5fj`<=CQGc5o09egexT4===D-@JL?qkMGF|g4O?HcAbPxFh z*ulPe2Q}dSc^g;Uh7ZS@=U=F8dW(*#7Ec<%Srl?_O@08i*?+tNgJMX0dITY!Mz_QV zvj!-!05_>tiu#$QddHb0SC47?8p%XsP!LHKK)E8{Q$r#R+tD*$jZK9ateFEd`=kGewGgW-Dp^QUxiV@D)~B z%o$|!y-DG6c@kmf^0Scyumu{T_L816{%c+o?oX_RZmL@ZTJ9yH$SA&*4ik(&X;ewsGzpq z_up47F8%q(q}!JsokaLXHdw0p1a)}e3m-Y+0Pp#%j-Z-fQy(9BoI;S>lLiWF|LgBq6qCUWpq2eN`lAaXu3+t?7eg~4p?Qkwuiruv!J zBvmz#*o$+R`?b~F1BW8Uwq`OpSMA+C_?q3Q96wpiNq(GHkQo86CL;8DF>_OHK>=+a z9P>^uy!CS9YYY-AG%9Ll*qC{j9zb9(=?h=rs|IPzToVU|t*qqOzcA?$d8H~U0aS)? zo9uAjt(4fP!bWu&{m4fgY!`rS1Ju%#^{+!u?&%blrg>MjGelcbMQ@O4MzHx$0IpQI zl=Z;C3U{wyP_5JQud+kd%Z4F!;%@^|+i}SRh??R^hdoc))&j)~q;>7Dl9smZcmPVd zkwxv*zyq%5fpjdY+vwPL-xWJvmg^bm#qebZ@&}LUqoT*o*QPzD7!c37-<+DuZ!dfpkNpJFk|(emo*CKm6XR37%*Y28v`>;&x99=PiL32jpML*hm3YO3{Khi@sa|h?qRlmt?~=m6I z!8a;gRqAOQwG7c%jE9`mrV#|iwqF&7z33kLfir@A=DPpMEnZX@C8%?D&LHdlr?v?)&a-V2cYNvk>YI?U;c@B>Fq9b-8^1|Ozwx8_re4jU?hrSo)P?*8qc`Pt z_N`@YJ3}Q)Ge~2QGv#d{^X|-dFi$1;FdKNi$~Wqml(;a6`}J%=7>vukr~=((UH8-f6oNpfL}dUk8+% z9+vemxKHLdlq#WoP(qT~AgJN4cJDduY+w(+*Jtv0?6=k6hxJp&!u5<^{IJ4AFm`yB zbW_0;z5NOVx-a-%RWq&|V~ZFnVbSq=H!ZvnV@ZlCW`849RcRCpSkSk+7kI4zY{bwypOr1uabiJ9lcwOEIYQ_792 zzA`;rNyAczStmJEJI&_o7Ymhc&+?R}%Ucc4z#qH-Q%HxzN6n1tAZ7rME@Os(XOgRo z>jIj%iu@Wr5}rjMcqT|CRW`QfhEJANDX&<^6J0fxl~3XFW1oK-Ho}$`tWR9#yN$|* z5(~5w$@2F8BO{l)QFX_W@q}nAYQL5BsWjJBrdDIGlt}<@>aKWxMA1-!c~eWx#|1f7 z3ykGw=ktao>58P>%(M zkr^PwJ6M?UJmuC1AU!?%`c)u zqAiQ3TJ|n7ZS`tyfkMDSl4xv(SVrU4zt10QsW_aU>477N!L}Tw|<5l(zNWL6LFqMLQ^Wgu}umyGC$)r}Lj6}qehNK8_ z@u-&-TZQ%Q$TP?<6I*#=-IC;_I78i`6j!;npbGbrpO%=oChL)@gBND7q>BJ;W8b%l zf%GJ6&eN0p)48A2rez-GX!T5F^cIRWyav6}2EFE$C5gg8ok?K2nEr*&MU^|`wl<#5 z3)#_0)1{ho8bIJijma+(Jo7t?vYLi2k+meVWB3B6^!NNBJh3vHXd`d`#7D)n^jB`h zSp3<{3nD-Bo_NfjuHDQcV?Qs@EIXymX1TH20XhBg1f5R&85NtNvnb&4h0j&0npSbK z1X4#zaf|{A?Vwr}s@*_T)RvKY3u==22eI|6aT;jwvPHm)vfN*(9h+Ul6ddm-Yu2=+ zX@2+56{HthA>zQ0HJfo{cJZssj^m={)S1Z5WA&=TN=F%|Ur0GLGbF%HA5-h& zf@9(r|9Gtzz=wP*68#qNI;q?CY=aZE#`^mq#?QahH}44)*AHYgs>p7Id)E=p`mdT6 zNK>uZI2%|ra!F46g1(l0sJvbiljH+vb0AgqIcc0+|1Fr z{aK3{Z%zOT}TNQxGeYmSs`i)04SkAJ1I#4=W67^B@w0 z)(Z35{=izN5wLn#Hh=N*#N-Y}nCbUY`6K1>1BO-!d#QJHz1jx!jj(Cu%Vq_j_EWV6 zg>~=zK>h}uGIqc&2pOn%LIaH14-If`6MbI(Hep$_Fv7%%K$sR*em!k{(V0L{_kHZ7 zIm#ZK7r~d&!%K7b%w%&A@bG7hPM+Hvyc{?+4_ifhqwe&J*@W8O*SZ^PVlcZ z(kN5H5EW(4|-(W!zykqqvVE>h;l-yQLm=TDPdq*hHJXT z62#}8@$HJTV&cpg+?p3zJAqBI##nB(8dDVfnExd^8%e=VGj z)mIXmZcD)@co-(xp3XU&^wUcRSd7+h$s!aHN;#!J<4V*0_xil;R!Z z9g0T8ZrJ_|4YPW=1;>wAAc7~F6nL4AX1Zh+DNSR}OdjQ-c z-}1QsIIXZ^GZRbBXwtP5#G z{dAm8t1`;zyZ!rwm9ALGNN!b@Z+2m_UV@LuO@QortAUJH%@iviR34KW_5;DJY7=^s zNgbVCN#A5_nj512e2$TSmFaczPFh|xxlBFBumml!cHA7 zYI7Q6bNq>^soM(DY-KCLr+$#sy-y3n!v7Acu7|j7_MGJ&dU^%&^&sgma6JEbn*QVS zlqJIMClrkTuc7)L#D4_6p&~SBI zJ6-f?wKx@&bx`IJHFBzm2mQX6N`BB>t)>$#J&vNHjl!-1*1=HZ+s zxlR+p`Z3o`ZDg4tjhomG=Un9}xLlMU?OAF=&}{Pb4>C*BLr&XR`c)(N5IXf~q-d-5 zu#8&>;+j~?kS12#D11^WV66fzjEeDDHxhDVkMeDAOD});TU^ej{Ut8Xa?jTG=&Rk; z1`GhkWwyCo6 zgdpRVdCKF)FTIcpzBR{$Y(I}2(;_YVS7uSjBz9zjsrL0JawrUuAdP}V2-?xRr~r`i z&9-Tz5L={mepB&UQn4|}Ty?|Kx)$)4zI70#%&CvJc35vI8`F_=)FX|?Mh5%KWl&74 zm8^7v+B()UCk<7uBijY)ANhBf(%Bu#3O9$ePnKIM-P1Oo77Azm!Ez$P93Ijn?Ahh>q-5ovO^EbTuNEo~aWkJvU zTO3*P6RSe)%1IiFE#I54rcq>{F+T)diVCp@ZKF;msTw8=@Cdwz9=edt{2Oc z+d7tMC;*r^hq|2-Hmiy1TdE#%sQK6XZWE3}3#UOYdm9N#_P$W4sC(JY>c#-M7maDk zNRHEF7l|tURVIFUCN-pyrBV85U#7MMA1wB1QySsk;D^#mHKcTC(XKgye3_RK650V$ zSE|>`#KXuZwCx>Ja94@cc z>JLZaHPSA(OJV#vlQ_@0kDgC(r!ess!q>VOG%|{LVX^Oeyl1y{hEuYZP7VfK$tGH1 zYz}63ifCy}U+8doe@gORUKlhUQL$qH$COKfoXs0r6TBTx9Tv@xTVg$TE~oi`&G-ux z0UNQi4c#V9sj^BfXIHofn$d%4_Ns)j_bncJFiB3P-skSB3wip6m|6!L`Au!XTQ6BO zSG&Yad_v;!zO0EvaLatZblD1bv>?1~kR|V}dBFMMJ0uJ5@Gvm|=Y%v%Yaiz@8SoTj zClrCelpjbtD!oeBPCy=gHX-{ji&fP$2wAM-$cBa=W27^Pxto95ET63_ZVN)d+>Mi+ zRi_Q_g(QNsw_1!0KF>fS160mh-QUGLZAg(=ggf-u9G-f%65Dt=p3{&Q=vH**zZ<@{a%zON& z8Ix*dtJv&2W~7apP21?&CMpNy5Q+vBpY)^KOCq&_bW`x_8Dh<<9Arz7X4%54H;@Ef z>2`EJ+KLrZj6%xaiREO0sh#6%P?k(H1HrR%H3$GDr&Pvd3vF3Cf%$cMUcdsHm!oN` z`W`N?Q!ti$VVswEuYTouiM^#7B-$5G_-Eg0&GfSERVi$%7R+5<-c%LeNoyT5pU>S? zE9v7>T}yMcAvrJXjX4APVTGn2571#8@=JhaTF4)JpY@(P5%wGpd2n*x!<~=^LACNW~aBG6e%6O*OJ;R37yMwqebg#oI{+=&*=Ota^kkfq~i4%2h|O4 z7t@)(_3HL|y7rkfSb%{CRJL#bvEL%@L_b%q~3jz5kNMb(VgfhpK>@RX<||tWhgJanzgX@uCi5`Z!RsQi?`3g zzq}2)!4Y*&#=lnHNRW*@eL~(sHn8kU54PL%-j7y&wVtlpH(>Rbe(U`AmpJ6yS9QXX zj8Mb{eqIAh6khSH(gD&vX|5cs;+AP=)pJMG-l`s7F*d0ChXG`V3?Sg_BMk~23@d)1 zEIutz8<5h1^Lbv#7yI+3{{?cJMW*bM&vPhXm0honS}9!P1t`!VmKas&OjtuSR|$(R zNE?I$>4HFAh9&i^p0m&O7RpCG3>Tnmghl7*v z$8N|^%8^%b5(bgsuIPGR;wyVQshlWijfOETaryzWC6Y%0$QL~kp( z4gbbcr+j$mm;UNUoo*K}uJp;Y=1i6Bc>9_$2cLJVIin`Qu=I0|AV6#3srJoco%8h z0%wm4r+dNl*L@nOkmbe!AB%~$Xys`;EqktldHesgbacSxzdyTTxQo(;cgGr84BzSb zCh0i#KiRtW$v#ZxXvm;Zay6e&`pUJcO#XkEIa3sX3eoeM7=srC%A*=kdX2s-Xqu5J zVO55!tb6Lb8s60b>{v^W4ZFH4WQUPseLXwLjWMtAKAi(Dls;HbwQ9SO$B3@y&XO%z z?9W<&e|Vs8g&+&z=+Jw1mE{>HBMGWWBxDaY)_Oulu9;$Ex$A%$9z1{O;*+EQQFPGd z2Nq(){}eI0x!f&hAn>%~p_BXwOFw#(bILz+3csr%{x5w%;2%dW2mqHQ39_<4&p!0t zlGWVvD)iF5Z8Rz?UFUQ#nIZ>Goyt!Z8omVO!Rw3M(nMn2>x_o=7JG~#l~B`4c^NLL zXm<)j)Fj^sW673xKdEJvw62-Ul6O~RxAgHfxEF)RRr8%~Y7la-)kCo=N%AZ2)^2X! zLxJeJZfqL-53ZTesZZ_A=tcA~fj#sx&=&NsmSIG=FUUIq;TaJW2Y}L!J`Q;i$Snex z*>))Odw?183YlaOAa_MA=>epdph@3{_Sr65460Jn?AJqtG__I$-Jx8e(H{B%0-Rqj+I-T7M!#{WAa_}A6HyDsZT|Gy62+%4pRJxig-_MqSu z-TXi_-Yui_!!tlG%(FjRyxX8}PVD-He?GVCchF~eVAvSpcJi#qW5{>1#6bB?Y~7n< z^k-+}Q0CUv^gbvyq)~`jnwj8?yIxm30f`jI-M{-#(rtscP<itw^5(m#F1;z$0MMbt|r2XVZQt5PnEQwnTF6rXrQZZU4c*? z;6M6013mKBOz9)gR|L6ow^3(&=Q2j`goP$TyA@ARvr^(EJbBrrU~$VZP8dEEZAf1Y z^(a7zq^xFe;>Kv12*g?H?qa-1m9N*Jx6~KsrH~(VBHH)qEX97)SaY=*Pae9qATT7F zVPFt`0kTfefY4cCirDQWz645OLYdJQ!xEb|tv_zgqE)b^hO}2-GwoJ7mmUO^SnSe$ z5OJ~q!K629#AZ$v&kbpb+Nt&EEWS7_37{Ra4j!e`%TobmS8?=%URgYxJ^ZM!y>ojI zz!Y$JXDLVwS{B_EbP*@MSNI5>Mf8p3X5V*(+AWo~vvxvBa(6*88ScH=Y<{JtOt$w> zULMjUp;0G%rC^zFM3)YINf);_@IIzYYT%=!Z>_cJs1D9=*MMB^6s6L7JVPT?-$WmQ z0MC$~{8DArG>!!PbrMW|eS|w@L*+MgLJqc}m2(#?r6a87N{e|d9Cvq?27+G9@yv|7 z9IzYhfhe=f5C9Ip^lv)`$rYro6s`vBgKCFI4-5z5ebg@1skA|*QC}v=-1&X-2%852 zjef#no<8hq;f58Y*p+BE)E#>4HI71=)c!fCaWiF2jm6N=*J+F5J(tiZ&k4=!%Nl94 zbJ1pZme9u40QSLbu%IX!^;-*)rMMLyX+OiSR{>5bqwMYEB_YceOP$J8!^ZTs0AED03|js_>%AMH9A`@fIN7ihe7uCI7prA!Bo&Qt8OkkTz*2 zrC~#?!hNXf=p&(m_oVmh3`wYhuIg}3f|VL3H?}hLyg2(us2;kRX#%+gf#-v#&bzG? zYx>sg%V-~#5}0(v9j6O1w34ktkS|0{)fiJ76Tk@Z<%_s>%B@$`^4}q{sxR)A=>AJe zpe>vbv!z2Lx;L{cF1xJhebDSFbQP!e@8F|#K0TjoEq^c(XOv3Nm zPiGOxmlE-S7%ohb?w>&oeCk=J_Uy_#^jQVrloNDT0D1z!LihpthLbpvRb}|Dd1yM2 zJvQv0`}LE4nhxkG0gWcF(Uk^$jdt`?dJyMCJzcm&=VpuopnTU)6zTvvfJM)3Lj!r8 z^V(grPY@#9>e8yi@0@7#w2|(okWw zB~^@c=EIlf!1pDc&FCXMa3aTP8|o}ep5vWL83tt4tB}GdyN;-6#w+Y3p+tC0o?I6R zI*6k)_$GF^wzn65XqSs(6;L*KsFD@YFZ#ft86Rt<)I@#^Hooz0OeD1P@<7M+nfS1P!tsp9$=%!o}sc1LZv`;uSE*K-j7zF=v(?;eSChA+Bwg&W8%$m1U9 zK4M37f>g{qVE7tihGiP|%m_OmM1np!yWQkjDBcz665e zQq`fb=wN<%732Fe2V8m-;va*OZwoln`Yv+7kWf-8(F*!vPfR6hxIJSqfuIhP-kC(_ zdL|G^nod)0hu7Zonm$vcM6Jqrs;6{uQWH1wX>8Lg2%K_|?dtmpY%E}fo$EE3cM9R>Z%211}sCqjhhPDsjM}bYfZ|C7s4&6X{iyIn!I^HSRUFtHzF6)}F|< zD_e=-EE(&Fx(~_xZB(%F;{5d%yj$O_S~dKCwf5!VRCRsWJ(X0RQWTX8;gDe`Wk{wJ z!ZBos9O21)oH)rmSDJ+6;NS>_LkPt==Ai)@G9A<7m@+#gnM3&2-g@5adEe)Kzw7(s z`=_hA*4cZn_4}>+zJK>xYi~0Fy8c<-v@_wpX}QVd{L(g_zB3ZJj`O#(-X8bol9icZ zD0{P;<+QH~J%lk6yfPd>$fzjJvNzE?oenQ6jmw(2^nj8Zl~w|A&vTSP^$ zhGl2`)7$S`A|_&KRGZ{sA#Ks&?St@ER?JWtdAbNYaUzv-<@`QWaahl``Z_heMXidN ziH48i9e25Xa=Vi8|;?w`k_1h%oPP7hQr^`b3~(-DN); zUWZ^o9suB*@2>JZd%n233_X^G(HbDqM&#Z3 z^Ll?wHkcIB7X>WJR{_s{_&)pOPXj)s4_OwH8y@WjWzipQA(WnWvtL1uaV{0i^7*(Q zmw|+X)8s95^LHTzKH!N4n{yse4h%Uho&XcH(xX`L=OZ^ji5MR@=%5_}sLg@>Tf%Qk zo&7@6y`zL481gY_3D7b9Q`x`ZG6m&o1tIvWJPyU>4K3!FYF2ng zGiTrYfuu-4li3;BOmLFnU%Wz-Vv~o=&uw5M}+eeHQ1b z1UGnIh~z9y%u%zvsW;(l4Z>-CW@!G9(A{ucrVB>E0bZi93ww_;=)LG{z;=NqaP0Ly zF>%Zd^Os_UsRLnzbr~({b`X;EP8!;L^aP5sYl{a`P@bYINSMnVg2jG`OBx%O5@_p> z6WN34Mx!DBuo?4Fm4tmT0b=NN-e^Z%ZV+L>Vq8$MA?PB2X+VpgdbWX^fKUkd&A45I ztp#Y>94+AKf>ZjP?K9n4&YQ&s@bB}=sYm_G5*R1%Y7XyYdi*yOn_?V2dEpAxU=M#7t$jmL@ z7DDj8uE*uoI~e2Z>O*=1{puStIt$Y}aNd!HGpq8GzBb3`^JEKgaB|8X-nZ{+Tjt~q zRCMgEaGeU0gBD#yngk)5U0sIQLEkX!XN8d=1jEd^7 zS<&|2{!6Rh={-IA(Y7`$}Jx4Ze=^*A11TS+`ksP)T3LpIFoyw-VO|26bUZB>mpm%D4cpfoZy?}OoS6gN_A{gvB#=92C zHuEe$WOGp}*j`Ky%rml1QT@l3h|l5{oDs(8W5uPfn&rzOT1R}ES^Jko!lTqaeb;-7 zd(Ng3MlDa+fcgj=^D#M?JHIon!p}X+Tp5u9sNmV;h&rwvm#wVtb-M^=bWJXLJ_D-; zAS<2g#u_6dpI*|ET^n9K&Z`H<(EcQ zs}j}?4h(PIbf$mc9NxOUWh=eBMQ2aOfvg1sz1B*QZ{PdTjr?!;_wp=-D|2usv=p`` z-#Fxi3x1D09aa`IG;|4Rm`I7b&j#N!6q<&227&fvy!W{bkrbkU4{$L?hUYNFMiy5WZ~-j> z;s@Wn@4$|XjAgE_%&ve|1=&IuF*7ccR(W;wq)D$;CLT|!>hD+2bJo=;(T>IVL`ED| zg$qrdO17EHxpN0t3^g^g{=Jew35m~W*G*!fFE{SgepZ!I4^=Jo9^2_}7`Jp3b0&dx zlj%bt9KPDPPuOkH>E6GLGv7S>w8>%M7GP|mM~LavP4nm zx{;Ya$v_k%%3|Qif*CL%(5w&&WavO@kuO4s7mG0G-jLKIHJl*#Jy6)IuUV>c7r~$e zUPKR^X}Hv8u)nK2l^p3t z%%^=<-o)res&@AzkAD6&ZQE8{nqD^9+?_tifhGn%i@N=$sq(R&a1PON;S^P_dVV{i z4wmhQ{2Ah`{nIJMUsWk(!v+F<=-<>OH>;DM_-15#KUXPpKY)rp3f~@eSzS0fqwm=^xZ3%$05L0;f15>og6ol;} zD0Q&ygXaa{+X1PDORr0*v8-=)&U$RTEe!Hfv>V@a-#64PC=38ZRjB`xxK`MZ?Lmf} zilWE(iuaAy+LUBQodUB&xSvz9qHl*pqMFE!( zv$AB=>_#$Mof!9JE8Dx>6PoqKKHmHIy%BhbcCg@nE>#kBYHfIyqnQ&ft|)F+9AXKY z_4nT(QCRhcs_E58WdSmA*3Ekg>2;ug??2Ue#S=UUK8g%-cG=Q?D3~At?37>^^l~df zEiDD1l5c07>yG>l*;NN9g-8s0nZ(>G><=rsYI_0sE(w zUU61vR3-E`ZSat_Ri!%jex%eRnC=35cH5xxWTKR_vaV=Jb~4(Y^=!pncvgZvhBG(Y^s+@X z@1;#~h^H1(qoig)#m$ECfuL?%s5{1iFF+|Ioz}X`0nSJQy^s-qvdFp0Dl{G^QWSa5xs~%ewpioLw9lD%N_&te zE497zP3mLNY2Y%pQxECfJB8Uhn0Zpwb%4OIK>IVZQl*w|1p8b;sPN}4dK&q7PQE5u zxZ`FAPhmnC*(P13tdJ_`nu2b+7=%RDR|WFkBs8g%9Z0cP6;J-NN$12>{=}viiHsJ? zNag+KQ!mWr0Ac8UZp$O&VCb*rfID)eaNz@nc4YW?6$@KoQMDK*&nUl)y1?!ZMSs4P zF+~|LJce=X(VDtXqE=ao!u^s+C!42?cN6U6>(@L_jEmL7C=bFM(@85oeGCo($WS-l zlLuLmxg*#6YAgMfod0R5rXq&R8ARR>69XcMWlsoo>77x(W5jzQ z9hJ7%$;~P5qFt9-r}+2`xMy#8R)`=m*!tuy?IaAkbdvHB0;^K$dLqnIKSR98EL5Wu&#P!mCrF(;M2!QM-<^3IZH1FZ z83I~iZW2sKs(*5Zh<+m%jJfQZ?No{SJhg4?1BaCoJnB8gHNHr%aXZh#pE zaQ(32$oT-to$e?#G23mnaS~UXhy4xq8ns_YT(ft`V8O1EVpWmufWvXuSM+ed35E1K zK9O|hBuN#|6^n^qswJjZ!uz}fEUrn-y>jq5 z)BL_cgjFR!WpaB1i({k~-DIyD7)1a()`HIN+YI|F)qC;+1f5+%Oeli=mPY*EEv4LGB6{2%Ctz{t7^q%Xyd;7Fhu&WyM|Qvp9MDYs&e_Y+ zz%qdO>@SIq?RETmiuMVKBRI&dN(yxlhs8FYu}h__-+5>qhF4X|Asr&&i!W_fTJ|nYd2pI&V*!kssBBaNN zrl^Abk}ptaW|46KIZ%kxl-?N$z*^K_JZeJt(N3;ikn>a8=sS7i_{}a@mx(Fy?S^p}+ zXs6-E*g$ovRPb%zdfsPc8O3gbc^7hXGEB(RzwZ?t0g#Yh;7@(%L;!ZfMf(@vmmYHosLkQYJQAV zaBVwAOAX`wX#qkE<=ex=_J3;h z54Fy5c?v_AgHm2rG3=lY=D8=`O1{vZ_wsQ27J^R_VW&Ce(1%ezOc(8^)00|vs6%my z=~EPQ_}Z-SUf8P6+Mn)(sUJKaPjNG7G@iyDz&lGl=*QI8Ys%17@D7?zo`)ol>48yI zqg08r8se~qdNo{_y^=mJoGd((=Dus7-@m>&xvoWw9&wQuW4TwGO!jyzlPHrNH-tZa z7|HmJ9HLasIp*1WRgm-SB}~1@uyKVwySGJA=jU0Jbgp{f z^vy`QeB}D+?(wx=VTGzN1s7xh^w9&VJ~3BSm-nzr!EYXDa9~8+dlzL9X*Z0ovGE{5 zlZfI&s^zUof=qa@`$FNDtY8y?^1f41 zJRY$Tr5u}-;`c~foFwtwOVnBG^MnWsgK0==o5tw0XW;^_qt`?pz*B?FZsARQ)cJpx z_(nq5?-EuO^0<5%BM57Xm^WYw-1A&>$T@QmvQLaT#<19X`pJp}$JJi6Q{(XU{_LQW zaj%*;AkAuwH!4Z6ckZ4hnncm|xr|7A%EF62qlGV{PZj=C+dtUoRWd#IEeX62C6$4* z`gs_s_q5T)b4i`swK>W=4q5k}lEP}urW&!V#OYx2%86&BA^}{jGeQ1s;;h+wM*iPf z;1qVTefKYgzrZK@ka+#_-+7=P^L0XhWzHrsD8`WIVorp!``u9{swQe$%ykWb(En#5 zps`}%tTpbB9xF`c!oy3i4h*G_Sm;O4Y95Zw=doMl#_amF(7-T!dJq3Jf_g@OHjUD%Y$0Or8V}qDB0L@_GKTJ$a zK6Vf2wL{T;*G`s_J_ht20{@Ni!9pudGVARmf}jJ&DKcj8u*`kOdgq4?pTV&SR95OR(O)eU+iO#4_+A=N=wdp z+302%=8QUQ+0yy@`+}>X*+Cj=g53^Kv`}Q~3sI|#Ct8NB`hE8+ws=@oFDI2F#g)s6 ze6=)U%gd6_Sxw7%v{h@__ezIPXJ&}AtLP`-lOU%rgj1(U{J3_;LtBPH$-w z%2EzlEll*3eN!5JSx79?F|sktV}hcO@1C*Aqu;3y_YK0Qlf#Mu-9eJhU_CBO64U^E zE+JWGd9WhFkGo#qa@`yu8Z_-#W_H|>nO)p;{S8@$ntxZo%WYIiC(7)(E)O4BbLR(3m4OEHU+YR!kQk*pUZhwR!MZ$9v5bG$T)$2S4ivTo%xO zVY|1qxK!=kEP$dPfmN}5h2uS1)DUEKgnx8U_!A6h|FN2$b)_a5v2b!Dw}_t>n2OS` zVS&5YOY^7LL>%BlFfNHN@!)o3j{_n-OX|^$bML0uPbLD=3{zuj=7k`SV*2Cyk8 zZk`CF0?iN{^+-PKztE6p$_Nb!XrS#cC{#{Ey~O^DgN~ieNBRef63H7|aGj1=G7gMF zEJLpuY(fAJ6ESxy1@Vf&&42kzh*b@=&ba@j2w0+kC#=*~kgVz0x?C%*CQ1#d8Gb4B z$!o7Md0}8%1!xI)hb`kMtG4`p5Q=37hG*m4_m`UQAKZsoBvqmJkN<+&0k9^4!{~YB z@74`)Q297M$Xf*n#Vm=a=!qT7+&LRm$D9(Hx2EJFznM0e{V11PHF2~d{E@Po0b2XJ% z&y7j!{UYT*$tsqV!uv&MrEYw`LDOu#?vp3b{UD(jCe2T_%HQ=$a!{o|q+X&fpwoYL zoAT_(oXI~jpX3oW7g?Qm!P=;cu*vVu9%2?yWktE2uD^+;(VDz2p$W>dF)@ z{h0Y*X8|dun4&6(JqK#C+4Qu7W4M!?^-g>+ZyLODZ z)#JC$Txx}MyF_UPD3w}(rVh03C43s<4C%Hru*p+nkA9&)zkQL}@4SggWX(;1!vmd_ z_7bL{q8v6=KMJQQ_&R(JX@*3)%^ae!p7?XAgD!@-sF}AWXz?wKh<7WlOi|#oE1vpD z7`QX#xN${GG$ckaZiFQlM_M5mF||C6GGlc&)Wql(L9uk-X}9`{Rgx%8wow*?=3nG^ zUg-{T%Wz-j_CJrUpnTzcHis7WZ(CP!w9ZiaXnH-M)xXV;;==ut8r-oajZ z?zxPZh@MbIv~Lj0Wtlx3Xs;Zc=490H#vjihF`cF*4-N~**(~z|x&5cddn)KkZYIvr zD+0Gk{vG$cGQN5^)O}bLDRJf?ZEE}D7r&i!dQ{;bd8v3Rnsuafeu~(e-OWQwPAeF1 z-CK(r(=jN1{!xWkf$Fv-Y3t-h2Ho%f8J{?hZA)D@?eY(rII|&G)RP9O%xkj&xSB(#vhKpqO23I$$8-~$t74v z{Ti#h$f!pi?Gq|um>D>a z6X}C{L|3#GRpZf(%l{z$KVn*_nX=I z0^&oWje|%<2ANp9riO8pB`*?B;;b3_Acieer-G*TXr=qw1Zc->kn%feH*}!%)1hx0 z-XBpZOCztVJk2J1U^|snHE=WB`;+CNZqcaO`%!9y&S^bEd3r8(dWI{PzAzNZT*Ka@ z_oD@KOmF4Sn1w4=B#Pil95v$L30KiwFer{cY@_cUsykHGc07DaMWKgzmdBy)Yf3gb zprMWKnAhjD>0sc?N* zMeugxc$cUhb7bI9Rb)c?5@s^jxTov6lYU8KJ?m(- zDMfJY(8aUP{cr$}LeBi^l=-DkAF0|0v+cS>#V+?pwNhcc>uh|CCUu0l1Wt;OdLUq>U_Cdkzt#7i3 zW6~(7d$(~?8Y)R{08jNmP4DL)=F1}9Hq^e|d80OX`=_ATZ$r1HPYuXGBEoIy+tB4b zId<;2M|ALf{e~%gGk2kj@YGl(lUq+y3fmBqmp3f7vV{)VODyinAZ>;?8jb$ML*=;H|&W+^a*%MeLlJ?WLL^BI& z6dl(>u~~P+2-q<$X6DxW9a}-g3EW=4-;>pGwtCI50w12X-ZnCxArC!}e)RqQ+J0Cb zL}#Pqn||=K1_qwyYIzj*(YTb^#z}noo@VpXn#0}ac2^gef4X{^-C8-;L&`&6dxhT5 zJj+p4%F5QSR2#oTKPDtF%WUj@_w{<;$jGjR>B9QRE-N2WB9E`YV{j^uhVLSThlFm- zJW82kO&5F?ba~`J@yflAyw2||znD3t`0{X9EhwL>H4F|I!}{RH=iYm^+b0U8yai&0 zmfKv#p51#DZGZRO!g|Wpii>C>t>9VzV z>+d#RiR~|vFVsGOY$V%qNNb=DHfH>%pNW@uk^>^v&(W@jGQ>>^O}uI0wsZA^k7RS- z`8dxCe~1^3uL%5_MZcW8csg|@jEVX*qHNywrA|Ilvw-=r6=sSMX~T`rFuPFjMu-yBdNMe|vn*kKg=(PQR`fz?2R&N3t0K?5 z)O-Q=!vHF`es(qf?9aN{W}ci5HcvxTs`>jqZ6N+PYRaig@zGnurC zVOnB^m(mmGgr1K))2A34J9HC7yNKQsNtITgga=ptl*UGWNwdGisOl_KhJm0DLpxtl zkx{FZOlAqpDV=1P(9r|4T`vB9_KJh)T+hLA&-SHgE}!zJ`Aq&C9(!hJw3lVH`O+WP zhb9{=wm7&p}up)^#k?fgzG!A}CgjHFJ&aHMrr;y&-`*c*j zAyq51xSbHA-rR9Ye2kd`8nt|yjS2%Fgv4CMDhp$;P|xc)B$T>Wn7tvHiOG zHP`)acD{X~Ln4)Vl4M=8TPMRWnc6qr&$IhDYkRy!yjelQEz3(anf^=Qdvq;=+K;l+ zC6%0~9DEl5IrY>zhhg>9UVf9hXbH(y|+!DwrFTBzFBK0Zek zTnn}uXL5b7X0H3^>doS*LuJ+*5i%>&btHgl01R%&n#n{TU+ikE!nbnhXnCX98>`z; z>cJK-E>xla00%sasUz~I-XAs_Z;D#F)AgcpIpq4sm$jGc6??^`quBP)L=$axEn4(8j!GE#%VzUBfS zuC{q&G1~HnCjsZr^s_k`O7O*+C5sZm>0*q6Le)U~r^~hH1{blJdKWG8x!uc9lce=& z;LAYfj-a|Vq#O*6%x=FvSGlyBEB)B*n^|7b0@UcMh<_JdIUmWFNVYJ2<*Q=P6^2nh zf3-J`B>|m#TasTRMQF9mt}>$A=stEJKhK#yE`=9v(=Ea~e!BSflG_n@=U%Xdp|ni>XLeFodmU6yTk^CsOo!=?7SJ489+Ax-P5wd=Vl zLcgXYwvado#3?@i zt|5XwoU-tq%uNxTpYNJ%FFbPx7wi#!!f|4eW=r>`E829;oY((E!c0DGmaf%X`t z6ha(%#`yy46hh_qm1dSxe!e4mjj164&!L)IsPv?S6QYL198w?bBU9V;ip-}5?_Z8g zcP??uRMhZ}{YE!vZeGQ;d|Sj_79jRYI~#QrA6$@& zeLuMtL|i3JzjEZQ?b}JIx<$9lyF`|N!G%p@-In7ru^ah%s}va(w9EzDL)@~;od zVc@Ob|5WWcg#L=rl7}DONRRHuS;YlaUE2Re7wzAMdR%y&uE{xgt~o<0H(WK-bl{_; zoLAYd*(J?er~h@FHuA|djn@*2lt(>VII9G3@z?YA)PXwQKtLk_>O)v_shbnVm{qw zJR+K+^R)2oqs}<3+3-MmF7E?Wd;dD6*QA`if2@7UBLFCZw9)Gv`l&=?q0TA4hI3&7 zvusOGu?egGdNKpi=}haU5k9-7rF_a4eF6+|8Q04^r*R>^82@@t;a-nIDRYr&e$OLP#7i751Ax!@ejUOQ)ev~8{VtJaOsgn|sr)Sb4oPmUcwa7{G0Yg9;q7GsE^9HO|%bm%9ozshbCwC6Wd z^dfyCI!@Y~c+$@#ew-%FZT?x*jZO)O2I)saA`PCb`a^PR+iZz{&q zR?wewoy69&4GD{FUIz5NrG-@!+S-fkTHd3E&6;@7+llmJhpBTdv90Qq`8B?;Ip4FNydtCR-j8W;L85 z*zO2SU)6g*!YDQr*c*LG=3<(?ouGs)g@1dAQi1mrw9o<@%(ykc)!@P$tW5}VoqdS- zOR%v;J-M|GA=^Sww>yk@zXXwzqA@5>-74`5-}DKrbT05^1c*p|Fy zWq+ayzU@$xUESJR%8Q4v=>7K2uqgzLrlESN!4F^HhX2bUN|d!ne1EV|@~`c8D$(uA z;3uJG^b=$EVgtN)c;{;ReF}eKcSU!{HVYl}=9^X~Xr=wqy1uz_WS@FL^^b};KG2}x z@n;d_cw6~p^b}sj^>B|T_14#YkUl#n{4>?rUE%iL6Bxpg6r8Gf&B>Kzs5xew^~b#% z86^*WY9&lQp6-Y>Q|6Ejtm=A0rlvlsIf&VQ$E1zmXYa~r4mD%T_D4%TaWX~ok2M|W zs}dG8I9yjjceH<|ewb5t$w<6MeUUpZFl)einj+e#Uoc&gy%YNF9S+N|Y?=9ec)fU# zV#*HQp=o=TX?89J6MwOI548?_Z;kkrYIZc8y&rONr%^Q`>vwpGEL|*q!7yyW?AqVIcwe(-%z~$}T!EXl|T) z7Cn?ayY2d{b_aoZ!lyP{Sh7l%x}YF!<)r=Fwx3SWI?J4d#)0VXI#8Oj>~oorPh`W3 zZZe+-IcRC9X`B({6iFoV^;dYq3-e`}#Eo?p{>`$0XN9pNzV*8qGfz~iPc}c+cMD1E z<71O$KiFuAA~}HNa8;=>X``XB@T_YV!kC^%PaM{r=ldIc&c^TE_HMj*ll#x+xq;2V cAH4S!6;J=ROZ*UcUBos`HC@%5i+|kvKif0)5dZ)H literal 0 HcmV?d00001 diff --git a/versioned_docs/version-1.24.1/guides/marquez_home.png b/versioned_docs/version-1.24.1/guides/marquez_home.png new file mode 100644 index 0000000000000000000000000000000000000000..1b5e6da7ca3bb6a7c123f5a0825948b1af01c7bf GIT binary patch literal 17233 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 literal 0 HcmV?d00001 diff --git a/versioned_docs/version-1.24.1/guides/marquez_job_facets.png b/versioned_docs/version-1.24.1/guides/marquez_job_facets.png new file mode 100644 index 0000000000000000000000000000000000000000..ac708343be411eaf857c9e875f14c5ec1bb9d133 GIT binary patch literal 43606 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

}i)Dl^_moE{F6A8C4Avg-}Y`Rfwk_ZL=s~ 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 CUfcEn literal 0 HcmV?d00001 diff --git a/versioned_docs/version-1.24.1/guides/marquez_output_dataset_latest.png b/versioned_docs/version-1.24.1/guides/marquez_output_dataset_latest.png new file mode 100644 index 0000000000000000000000000000000000000000..c4b2aa28a2b7cc73c439d4c4d50890605c8312ac GIT binary patch literal 29751 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 WBo3(BF`&`rUj|oA^h$JYh5tYHJxU<} literal 0 HcmV?d00001 diff --git a/versioned_docs/version-1.24.1/guides/marquez_output_dataset_version.png b/versioned_docs/version-1.24.1/guides/marquez_output_dataset_version.png new file mode 100644 index 0000000000000000000000000000000000000000..45417478ef09cee1680745d559e1b9401966b877 GIT binary patch literal 30584 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 literal 0 HcmV?d00001 diff --git a/versioned_docs/version-1.24.1/guides/spark-connector.md b/versioned_docs/version-1.24.1/guides/spark-connector.md new file mode 100644 index 0000000..c2f3da8 --- /dev/null +++ b/versioned_docs/version-1.24.1/guides/spark-connector.md @@ -0,0 +1,51 @@ +--- +sidebar_position: 6 +--- + +# OpenLineage for Spark Connectors + +### What is OpenLineage +OpenLineage is an open standard for lineage data collection. It tracks metadata about core objects - datasets, jobs and runs - that represent how data is moving through the data pipelines. + +Besides describing standard events, OpenLineage project develops integration for popular open source data processing tools, like Apache Airflow, dbt, Apache Flink and Apache Spark, that allow users to automatically gather lineage metadata while the data jobs are running. +How does Spark OpenLineage integration work? +OpenLineage implements an instance of SparkListener interface, which allows it to listen to Spark events emitted during executions. Amongst those events are those that let us know that Spark Job has started or stopped running, like SparkListenerJobStart, SparkListenerJobEnd. When an OL listener receives that event, it can look up the LogicalPlan of a job, which represents a high level representation of a computation that Spark plans to do. + +LogicalPlan has a tree-like structure. The leafs of the tree are sources of the data that describe where and how Spark is reading the input datasets. Then, data flows through intermediary nodes that describe some computation to be performed - like joins, or reshaping the data structure - like some projection. At the end, the root node describes where the data will end up. The peculiarity of that structure is that there is only one output node - if you write data to multiple output datasets, it’s represented as multiple jobs and LogicalPlan trees. + +### What has OpenLineage to do with Spark connectors? + +LogicalPlan is an abstract class. The particular operations, whether reading data, processing it or writing it are implemented as a subclass of it, with attributes and methods allowing OL listener to interpret that data. OL Spark integration has a concept of visitors that receive nodes of the LogicalPlan - visitor defines the conditions - like, whether that LogicalPlan node is a particular subclass, like SaveIntoDataSourceCommand, or it’s received in particular phase of a Spark Job’s lifetime - and how to process data given it wants to do it. + +Spark Connectors, whether included by default in Spark or external to it, have few options on how to implement the necessary operations. This is a very simplified explanation. + +First is to implement your own LogicalPlan nodes together with extending Spark Planner to make sure the right LogicalPlan is generated. This is the hardest route, and it’s how several internal Spark connectors work, including Hive. + +Second is to implement the DataSourceV1 API. This includes implementing interfaces like RelationProvider, FileFormat. This allows users to read or write data using standard DataFrame APIs: +val people: DataFrame = spark.read + .format("csv") + .load("people.csv") + +Third is to implement the DataSourceV2 API. This includes implementing a custom Table interface that represents a dataset, with Traits that allow you to specify implementation of particular operations and optimizations (like predicate pushdown). This also allows users to read or write data using standard DataFrame APIs - Spark detects whether the connector uses V1 or V2 interface and uses correct code paths. + +The point of using DataSource APIs for connectors is that they reuse several structures of Spark, including standard user APIs, and LogicalPlans generated for those connectors are implemented: the planner will check whether relevant format is available, and for example for reading from V2 interface will generate DataSourceV2Relation leaf node, that uses relevant Table implementation under the hood coming from particular connector jar. + +To achieve full coverage of Spark operations, OL has to cover implementation of connectors whether they use V1 or V2 interface - it needs to understand the interface’s structure, what LogicalPlan nodes they use and implement support for it in a way that allows us to expose correct dataset naming from each connector - with possibly more metadata. + +### What does OpenLineage want to do with Spark connectors? + +Right now, OL integration implements support for each connector in the OpenLineage repository. This means OL Spark integration doesn’t only have to understand what LogicalPlan Spark will generate for standard Spark constructs, but also the underlying implementations of DataSource interfaces - for example, OL has an IcebergHandler class that handles getting correct dataset names of Iceberg tables, using internal Iceberg connector classes. + +This could be improved for a few reasons. + +First, the connector can change in a way that breaks our interface and they don’t know anything about it. The OpenLineage team also most likely won’t know anything about it until it gets a bug report. + +Second, even when OL receives a bug report, it has to handle the error in a backwards-compatible manner. Users can use different connector versions with different Spark versions on different Scala versions… The matrix of possible configurations vastly exceeds separate implementations for different versions, so the only solution that is realistically doable is using reflection to catch the change and try different code paths. This happens for the BigQuery connector. + +To solve this problem, OL wants to migrate responsibility to exposing lineage metadata directly to connectors, and has created interfaces for Spark connectors to implement. Given implementation of those interfaces, OL Spark integration can just use the exposed data without need to understand the implementation. It allows connectors to test whether they expose correct lineage metadata, and migrate the internals without breaking any OL Spark integration code. + +The interfaces provide a way to integrate OL support for a variety of ways in which Spark connectors are implemented. For example, if connector implements RelationProvider, OL interfaces allow you to extend it with class LineageRelationProvider, that tells the OL Spark integration that it can call getLineageDatasetIdentifier on it, without the need to use other, internal methods of the RelationProvider. + +It requires the connector to depend on two maven packages: spark-extension-interfaces and spark-extension-entrypoint. The first one contains the necessary classes to implement support for OpenLineage, however, to maintain compatibility with other connectors (that might rely on a different version of the same jar) the relocation of the package is required. The second package, spark-extension-entrypoint acts like a “pointer” for the actual implementation in the connector, allowing OpenLineage-Spark integration use those relocated classes. + +The detailed documentation for interfaces is [here](https://openlineage.io/docs/development/developing/spark/built_in_lineage/). diff --git a/versioned_docs/version-1.24.1/guides/spark.md b/versioned_docs/version-1.24.1/guides/spark.md new file mode 100644 index 0000000..261fc5f --- /dev/null +++ b/versioned_docs/version-1.24.1/guides/spark.md @@ -0,0 +1,201 @@ +--- +sidebar_position: 2 +--- + +# Using OpenLineage with Spark + +#### Adapted from a [blog post](https://openlineage.io/blog/openlineage-spark/) by Michael Collado + +:::caution +This guide was developed using an **earlier version** of this integration and may require modification for recent releases. +::: + +Adding OpenLineage to Spark is refreshingly uncomplicated, and this is thanks to Spark's SparkListener interface. OpenLineage integrates with Spark by implementing SparkListener and collecting information about jobs executed inside a Spark application. To activate the listener, add the following properties to your Spark configuration in your cluster's `spark-defaults.conf` file or, alternatively, add them to specific jobs on submission via the `spark-submit` command: + +``` +spark.jars.packages io.openlineage:openlineage-spark:1.23.0 +spark.extraListeners io.openlineage.spark.agent.OpenLineageSparkListener +``` + +Once activated, the listener needs to know where to report lineage events, as well as the namespace of your jobs. Add the following additional configuration lines to your `spark-defaults.conf` file or your Spark submission script: + +``` +spark.openlineage.transport.url {your.openlineage.host} +spark.openlineage.transport.type {your.openlineage.transport.type} +spark.openlineage.namespace {your.openlineage.namespace} +``` + +## Running Spark with OpenLineage + +### Prerequisites + +- Docker Desktop +- git +- Google Cloud Service account +- Google Cloud Service account JSON key file + +Note: your Google Cloud account should have access to BigQuery and read/write access to your GCS bucket. Giving your key file an easy-to-remember name (bq-spark-demo.json) is recommended. Finally, if using macOS Monterey (macOS 12), port 5000 will have to be released by [disabling the AirPlay Receiver](https://developer.apple.com/forums/thread/682332). + +### Instructions + +Clone the OpenLineage project, navigate to the spark directory, and create a directory for your Google Cloud Service credentials: + +``` +git clone https://github.com/OpenLineage/OpenLineage +cd integration/spark +mkdir -p docker/notebooks/gcs +``` + +Copy your Google Cloud Service credentials file into that directory, then run: + +``` +docker-compose up +``` + +This launches a Jupyter notebook with Spark as well as a Marquez API endpoint already installed to report lineage. Once the notebook server is up and running, you should see something like the following in the logs: + +``` +notebook_1 | [I 21:43:39.014 NotebookApp] Jupyter Notebook 6.4.4 is running at: +notebook_1 | [I 21:43:39.014 NotebookApp] http://082cb836f1ec:8888/?token=507af3cf9c22f627f6c5211d6861fe0804d9f7b19a93ca48 +notebook_1 | [I 21:43:39.014 NotebookApp] or http://127.0.0.1:8888/?token=507af3cf9c22f627f6c5211d6861fe0804d9f7b19a93ca48 +notebook_1 | [I 21:43:39.015 NotebookApp] Use Control-C to stop this server and shut down all kernels (twice to skip confirmation). +``` + +Copy the URL with 127.0.0.1 as the hostname from your own log (the token will be different from this one) and paste it into your browser window. You should have a blank Jupyter notebook environment ready to go. + +![Jupyter notebook environment](jupyter_home.png) + +Click on the notebooks directory, then click on the New button to create a new Python 3 notebook. + +![Jupyter new notebook](jupyter_new_notebook.png) + +In the first cell in the window paste the below text. Update the GCP project and bucket names and the service account credentials file, then run the code: + +``` +from pyspark.sql import SparkSession +import urllib.request + +# Download dependencies for BigQuery and GCS +gc_jars = ['https://repo1.maven.org/maven2/com/google/cloud/bigdataoss/gcs-connector/hadoop3-2.1.1/gcs-connector-hadoop3-2.1.1-shaded.jar', + 'https://repo1.maven.org/maven2/com/google/cloud/bigdataoss/bigquery-connector/hadoop3-1.2.0/bigquery-connector-hadoop3-1.2.0-shaded.jar', + 'https://repo1.maven.org/maven2/com/google/cloud/spark/spark-bigquery-with-dependencies_2.12/0.22.2/spark-bigquery-with-dependencies_2.12-0.22.2.jar'] + +files = [urllib.request.urlretrieve(url)[0] for url in gc_jars] + +# Set these to your own project and bucket +project_id = 'bq-openlineage-spark-demo' +gcs_bucket = 'bq-openlineage-spark-demo-bucket' +credentials_file = '/home/jovyan/notebooks/gcs/bq-spark-demo.json' + +spark = (SparkSession.builder.master('local').appName('openlineage_spark_test') + .config('spark.jars', ",".join(files)) + + # Install and set up the OpenLineage listener + .config('spark.jars.packages', 'io.openlineage:openlineage-spark:1.23.0') + .config('spark.extraListeners', 'io.openlineage.spark.agent.OpenLineageSparkListener') + .config('spark.openlineage.transport.url', 'http://marquez-api:5000') + .config('spark.openlineage.transport.type', 'http') + .config('spark.openlineage.namespace', 'spark_integration') + + # Configure the Google credentials and project id + .config('spark.executorEnv.GCS_PROJECT_ID', project_id) + .config('spark.executorEnv.GOOGLE_APPLICATION_CREDENTIALS', '/home/jovyan/notebooks/gcs/bq-spark-demo.json') + .config('spark.hadoop.google.cloud.auth.service.account.enable', 'true') + .config('spark.hadoop.google.cloud.auth.service.account.json.keyfile', credentials_file) + .config('spark.hadoop.fs.gs.impl', 'com.google.cloud.hadoop.fs.gcs.GoogleHadoopFileSystem') + .config('spark.hadoop.fs.AbstractFileSystem.gs.impl', 'com.google.cloud.hadoop.fs.gcs.GoogleHadoopFS') + .config("spark.hadoop.fs.gs.project.id", project_id) + .getOrCreate()) +``` + +Most of this is boilerplate for installing the BigQuery and GCS libraries in the notebook environment. This also sets the configuration parameters to tell the libraries what GCP project to use and how to authenticate with Google. The parameters specific to OpenLineage are the four already mentioned: `spark.jars.packages`, `spark.extraListeners`, `spark.openlineage.host`, `spark.openlineage.namespace`. Here, the host has been configured to be the `marquez-api` container started by Docker. + +With OpenLineage configured, it's time to get some data. The below code populates Spark DataFrames with data from two COVID-19 public data sets. Create a new cell in the notebook and paste the following: + +``` +from pyspark.sql.functions import expr, col + +mask_use = spark.read.format('bigquery') \ + .option('parentProject', project_id) \ + .option('table', 'bigquery-public-data:covid19_nyt.mask_use_by_county') \ + .load() \ + .select(expr("always + frequently").alias("frequent"), + expr("never + rarely").alias("rare"), + "county_fips_code") + +opendata = spark.read.format('bigquery') \ + .option('parentProject', project_id) \ + .option('table', 'bigquery-public-data.covid19_open_data.covid19_open_data') \ + .load() \ + .filter("country_name == 'United States of America'") \ + .filter("date == '2021-10-31'") \ + .select("location_key", + expr('cumulative_deceased/(population/100000)').alias('deaths_per_100k'), + expr('cumulative_persons_fully_vaccinated/(population - population_age_00_09)').alias('vaccination_rate'), + col('subregion2_code').alias('county_fips_code')) +joined = mask_use.join(opendata, 'county_fips_code') + +joined.write.mode('overwrite').parquet(f'gs://{gcs_bucket}/demodata/covid_deaths_and_mask_usage/') +``` + +Some background on the above: the `covid19_open_data` table is being filtered to include only U.S. data and data for Halloween 2021. The `deaths_per_100k` data point is being calculated using the existing `cumulative_deceased` and `population` columns and the `vaccination_rate` using the total population, subtracting the 0-9 year olds, since they were ineligible for vaccination at the time. For the `mask_use_by_county` data, "rarely" and "never" data are being combined into a single number, as are "frequently" and "always." The columns selected from the two datasets are then stored in GCS. + +Now, add a cell to the notebook and paste this line: + +``` +spark.read.parquet(f'gs://{gcs_bucket}/demodata/covid_deaths_and_mask_usage/').count() +``` + +The notebook should print a warning and a stacktrace (probably a debug statement), then return a total of 3142 records. + +Now that the pipeline is operational it is available for lineage collection. + +The `docker-compose.yml` file that ships with the OpenLineage repo includes only the Jupyter notebook and the Marquez API. To explore the lineage visually, start up the Marquez web project. Without terminating the existing docker containers, run the following command in a new terminal: + +``` +docker run --network spark_default -p 3000:3000 -e MARQUEZ_HOST=marquez-api -e MARQUEZ_PORT=5000 -e WEB_PORT=3000 --link marquez-api:marquez-api marquezproject/marquez-web:0.19.1 +``` + +Next, open a new browser tab and navigate to http://localhost:3000, which should look like this: + +![Marquez home](marquez_home.png) + +Note: the `spark_integration` namespace is automatically chosen because there are no other namespaces available. Three jobs are listed on the jobs page of the UI. They all start with `openlineage_spark_test`, which is the appName passed to the SparkSession when the first cell of the notebook was built. Each query execution or RDD action is represented as a distinct job and the name of the action is appended to the application name to form the name of the job. Clicking on the `openlineage_spark_test.execute_insert_into_hadoop_fs_relation_command` node calls up the lineage graph for our notebook: + +![Marquez job graph](marquez_job_graph.png) + +The graph shows that the `openlineage_spark_test.execute_insert_into_hadoop_fs_relation_command` job reads from two input datasets, `bigquery-public-data.covid19_nyt.mask_use_by_county` and `bigquery-public-data.covid19_open_data.covid19_open_data`, and writes to a third dataset, `/demodata/covid_deaths_and_mask_usage`. The namespace is missing from that third dataset, but the fully qualified name is `gs:///demodata/covid_deaths_and_mask_usage`. + +The bottom bar shows some interesting data that was collected from the Spark job. Dragging the bar up expands the view to offer a closer look. + +![Marquez job facets](marquez_job_facets.png) + +Two facets always collected from Spark jobs are the `spark_version` and the `spark.logicalPlan`. The first simply reports what version of Spark was executing, as well as the version of the openlineage-spark library. This is helpful for debugging job runs. + +The second facet is the serialized optimized LogicalPlan Spark reports when the job runs. Spark’s query optimization can have dramatic effects on the execution time and efficiency of the query job. Tracking how query plans change over time can significantly aid in debugging slow queries or `OutOfMemory` errors in production. + +Clicking on the first BigQuery dataset provides information about the data: + +![Marquez BigQuery dataset](marquez_bigquery_dataset_latest.png) + +One can see the schema of the dataset as well as the datasource. + +Similar information is available about the dataset written to in GCS: + +![Marquez output dataset](marquez_output_dataset_latest.png) + +As in the BigQuery dataset, one can see the output schema and the datasource — in this case, the `gs://` scheme and the name of the bucket written to. + +In addition to the schema, one can also see a stats facet, reporting the number of output records and bytes as -1. + +The VERSIONS tab on the bottom bar would display multiple versions if there were any (not the case here). Clicking on the version shows the same schema and statistics facets, but they are specific to the version selected. + +![Marquez output dataset version](marquez_output_dataset_version.png) + +In production, this dataset would have many versions, as each time a job runs a new version of the dataset is created. This permits the tracking of changes to the statistics and schema over time, aiding in debugging slow jobs or data quality issues and job failures. + +The final job in the UI is a HashAggregate job. This represents the `count()` method called at the end to show the number of records in the dataset. Rather than a `count()`, this could easily be a `toPandas()` call or some other job that reads and processes that data -- perhaps one that stores output back into GCS or updates a Postgres database, publishes a new model, etc. Regardless of where the output gets stored, the OpenLineage integration allows one to see the entire lineage graph, unifying datasets in object stores, relational databases, and more traditional data warehouses. + +### Conclusion + +The Spark integration from OpenLineage offers users insights into graphs of datasets stored in object stores like S3, GCS, and Azure Blob Storage, as well as BigQuery and relational databases like Postgres. Now with support for Spark 3.1, OpenLineage offers visibility into more environments, such as Databricks, EMR, and Dataproc clusters. \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/index.md b/versioned_docs/version-1.24.1/index.md new file mode 100644 index 0000000..649e5f8 --- /dev/null +++ b/versioned_docs/version-1.24.1/index.md @@ -0,0 +1,65 @@ +--- +sidebar_position: 1 +--- + +# About OpenLineage + +OpenLineage is an open framework for data lineage collection and analysis. At its core is an extensible specification that systems can use to interoperate with lineage metadata. + +### Design + +OpenLineage is an _Open Standard_ for lineage metadata collection designed to record metadata for a _job_ in execution. + +The standard defines a generic model of _dataset_, _job_, and _run_ entities uniquely identified using consistent naming strategies. The core model is highly extensible via facets. A **facet** is user-defined metadata and enables entity enrichment. We encourage you to familiarize yourself with the core model below: + +![image](./model.svg) + + +### How OpenLineage Benefits the Ecosystem + +Below, we illustrate the challenges of collecting lineage metadata from multiple sources, schedulers and/or data processing frameworks. We then outline the design benefits of defining an _Open Standard_ for lineage metadata collection. + +#### BEFORE: + +![image](./before-ol.svg) + +* Each project has to instrument its own custom metadata collection integration, therefore duplicating efforts. +* Integrations are external and can break with new versions of the underlying scheduler and/or data processing framework, requiring projects to ensure _backwards_ compatibility. + +#### WITH OPENLINEAGE: + +![image](./with-ol.svg) + +* Integration efforts are shared _across_ projects. +* Integrations can be _pushed_ to the underlying scheduler and/or data processing framework; no longer does one need to play catch up and ensure compatibility! + +## Scope +OpenLineage defines the metadata for running jobs and their corresponding events. +A configurable backend allows the user to choose what protocol to send the events to. + ![Scope](./scope.svg) + +## Core model + + ![Model](./datamodel.svg) + + A facet is an atomic piece of metadata attached to one of the core entities. + See the spec for more details. + +## Spec +The [specification](https://github.com/OpenLineage/OpenLineage/blob/main/spec/OpenLineage.md) is defined using OpenAPI and allows extension through custom facets. + +## Integrations + +The OpenLineage repository contains integrations with several systems. + +- [Apache Airflow](https://github.com/OpenLineage/OpenLineage/tree/main/integration/airflow) +- [Apache Flink](https://github.com/OpenLineage/OpenLineage/tree/main/integration/flink) +- [Apache Spark](https://github.com/OpenLineage/OpenLineage/tree/main/integration/spark) +- [Dagster](https://github.com/OpenLineage/OpenLineage/tree/main/integration/dagster) +- [dbt](https://github.com/OpenLineage/OpenLineage/tree/main/integration/dbt) +- [SQL](https://github.com/OpenLineage/OpenLineage/tree/main/integration/sql) + +## Related projects +- [Marquez](https://marquezproject.ai/): Marquez is an [LF AI & DATA](https://lfaidata.foundation/) project to collect, aggregate, and visualize a data ecosystem's metadata. It is the reference implementation of the OpenLineage API. + - [OpenLineage collection implementation](https://github.com/MarquezProject/marquez/blob/main/api/src/main/java/marquez/api/OpenLineageResource.java) +- [Egeria](https://egeria.odpi.org/): Egeria Open Metadata and Governance. A metadata bus. \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/integrations/_category_.json b/versioned_docs/version-1.24.1/integrations/_category_.json new file mode 100644 index 0000000..c2495ff --- /dev/null +++ b/versioned_docs/version-1.24.1/integrations/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Integrations", + "position": 5 +} diff --git a/versioned_docs/version-1.24.1/integrations/about.md b/versioned_docs/version-1.24.1/integrations/about.md new file mode 100644 index 0000000..bedd9ba --- /dev/null +++ b/versioned_docs/version-1.24.1/integrations/about.md @@ -0,0 +1,55 @@ +--- +sidebar_position: 1 +--- + +# OpenLineage Integrations + +## Capability Matrix + +:::caution +This matrix is not yet complete. +::: + +The matrix below shows the relationship between an input facet and various mechanisms OpenLineage uses to gather metadata. Not all mechanisms collect data to fill in all facets, and some facets are specific to one integration. +✔️: The mechanism does implement this facet. +✖️: The mechanism does not implement this facet. +An empty column means it is not yet documented if the mechanism implements this facet. + +| Mechanism | Integration | Metadata Gathered | InputDatasetFacet | OutputDatasetFacet | SqlJobFacet | SchemaDatasetFacet | DataSourceDatasetFacet | DataQualityMetricsInputDatasetFacet | DataQualityAssertionsDatasetFacet | SourceCodeJobFacet | ExternalQueryRunFacet | DocumentationDatasetFacet | SourceCodeLocationJobFacet | DocumentationJobFacet | ParentRunFacet | +|:-------------------|:------------------|:----------------------------------------------|:------------------|:-------------------|:------------|:-------------------|:-----------------------|:------------------------------------|:----------------------------------|:-------------------|:----------------------|:--------------------------|:---------------------------|:----------------------|:---------------| +| SnowflakeOperator* | Airflow Extractor | Lineage
Job duration | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | ✖️ | ✖️ | | | | | | | +| BigQueryOperator** | Airflow Extractor | Lineage
Schema details
Job duration | ✔️ | ✔️ | | ✔️ | | | | | | | | | | +| PostgresOperator* | Airflow Extractor | Lineage
Job duration | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | | | | | | | | | +| SqlCheckOperators | Airflow Extractor | Lineage
Data quality assertions | ✔️ | ✖️ | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | | | | | | | +| dbt | dbt Project Files | Lineage
Row count
Byte count. | ✔️ | | | | | | | | | | | | | +| Great Expectations | Action | Data quality assertions | ✔️ | | | | | ✔️ | ✔️ | | | | | | | +| Spark | SparkListener | Schema
Row count
Column lineage | ✔️ | | | | | | | | | | | | | +| Snowflake*** | Access History | Lineage | | | | | | | | | | | | | | + +\* Uses the Rest SQL parser +\*\* Uses the BigQuery API +\*\*\* Uses Snowflake query logs + +## Compatibility matrix + +This matrix shows which data sources are known to work with each integration, along with the minimum versions required in the target system or framework. + +| Platform | Version | Data Sources | +|:-------------------|:-------------------------------|:-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Apache Airflow | 1.10+
2.0+ | PostgreSQL
MySQL
Snowflake
Amazon Athena
Amazon Redshift
Amazon SageMaker
Amazon S3 Copy and Transform
Google BigQuery
Google Cloud Storage
Great Expectations
SFTP
FTP | +| Apache Spark | 2.4+ | JDBC
HDFS
Google Cloud Storage
Google BigQuery
Amazon S3
Azure Blob Storage
Azure Data Lake Gen2
Azure Synapse | +| dbt | 0.20+ | Snowflake
Google BigQuery | + +## Integration strategies + +:::info +This section could use some more detail! You're welcome to contribute using the Edit link at the bottom. +::: + +### Integrating with pipelines + +![Integrating with Pipelines](integrate-pipelines.svg) + +### Integrating with data sources + +![Integrating with Data Sources](integrate-datasources.svg) diff --git a/versioned_docs/version-1.24.1/integrations/airflow/_category_.json b/versioned_docs/version-1.24.1/integrations/airflow/_category_.json new file mode 100644 index 0000000..e836aa5 --- /dev/null +++ b/versioned_docs/version-1.24.1/integrations/airflow/_category_.json @@ -0,0 +1,8 @@ +{ + "label": "Apache Airflow", + "position": 4, + "link": { + "type": "doc", + "id": "airflow" + } +} \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/integrations/airflow/af-schematic.svg b/versioned_docs/version-1.24.1/integrations/airflow/af-schematic.svg new file mode 100644 index 0000000..c1e7b36 --- /dev/null +++ b/versioned_docs/version-1.24.1/integrations/airflow/af-schematic.svg @@ -0,0 +1,229 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/versioned_docs/version-1.24.1/integrations/airflow/airflow.md b/versioned_docs/version-1.24.1/integrations/airflow/airflow.md new file mode 100644 index 0000000..a7bb2c4 --- /dev/null +++ b/versioned_docs/version-1.24.1/integrations/airflow/airflow.md @@ -0,0 +1,52 @@ +--- +sidebar_position: 1 +title: Apache Airflow +--- + +:::caution +This page is about Airflow's external integration that works mainly for Airflow versions \<2.7. +[If you're using Airflow 2.7+, look at native Airflow OpenLineage provider documentation.](https://airflow.apache.org/docs/apache-airflow-providers-openlineage/stable/index.html)

+ +The ongoing development and enhancements will be focused on the `apache-airflow-providers-openlineage` package, +while the `openlineage-airflow` will primarily be updated for bug fixes. See [all Airflow versions supported by this integration](older.md#supported-airflow-versions) +::: + + +**Airflow** is a widely-used workflow automation and scheduling platform that can be used to author and manage data pipelines. Airflow uses workflows made of directed acyclic graphs (DAGs) of tasks. To learn more about Airflow, check out the Airflow [documentation](https://airflow.apache.org/docs/apache-airflow/stable/index.html). + +## How does Airflow work with OpenLineage? + +Understanding complex inter-DAG dependencies and providing up-to-date runtime visibility into DAG execution can be challenging. OpenLineage integrates with Airflow to collect DAG lineage metadata so that inter-DAG dependencies are easily maintained and viewable via a lineage graph, while also keeping a catalog of historical runs of DAGs. + +![image](./af-schematic.svg) + + +The DAG metadata collected can answer questions like: + +* Why has a DAG failed? +* Why has the DAG runtime increased after a code change? +* What are the upstream dependencies of a DAG? + + +## How can I use this integration? + +To instrument your Airflow instance with OpenLineage, follow [these instructions](usage.md). + +## How to add lineage coverage for more operators? + +OpenLineage provides a set of `extractors` that extract lineage from operators. + +If you want to add lineage coverage for your own custom operators, follow these [instructions to add lineage to operators](default-extractors.md). + +If you want to add coverage for operators you can not modify, follow [instructions to add custom extractors](extractors/custom-extractors.md). + +If you want to expose lineage as a one off in your workflow, [you can also manually annotate the tasks in your DAG](manual.md). + +## Where can I learn more? + +* Take a look at Marquez's Airflow [example](https://github.com/MarquezProject/marquez/tree/main/examples/airflow) to learn how to enable OpenLineage metadata collection for Airflow DAGs and troubleshoot failing DAGs using Marquez. +* Watch [Data Lineage with OpenLineage and Airflow](https://www.youtube.com/watch?v=2s013GQy1Sw) + +## Feedback + +You can reach out to us on [slack](http://bit.ly/OpenLineageSlack) and leave us feedback! diff --git a/versioned_docs/version-1.24.1/integrations/airflow/default-extractors.md b/versioned_docs/version-1.24.1/integrations/airflow/default-extractors.md new file mode 100644 index 0000000..8cb012b --- /dev/null +++ b/versioned_docs/version-1.24.1/integrations/airflow/default-extractors.md @@ -0,0 +1,369 @@ +--- +sidebar_position: 4 +title: Exposing Lineage in Airflow Operators +--- + +:::caution +This page is about Airflow's external integration that works mainly for Airflow versions \<2.7. +[If you're using Airflow 2.7+, look at native Airflow OpenLineage provider documentation.](https://airflow.apache.org/docs/apache-airflow-providers-openlineage/stable/index.html)

+ +The ongoing development and enhancements will be focused on the `apache-airflow-providers-openlineage` package, +while the `openlineage-airflow` will primarily be updated for bug fixes. See [all Airflow versions supported by this integration](older.md#supported-airflow-versions) +::: + +OpenLineage 0.17.0+ makes adding lineage to your data pipelines easy through support of direct modification of Airflow operators. This means that custom operators—built in-house or forked from another project—can provide you and your team with lineage data without requiring modification of the OpenLineage project. The data will still go to your lineage backend of choice, most commonly using the `OPENLINEAGE_URL` environment variable. + +Lineage extraction works a bit differently under the hood starting with OpenLineage 0.17.0. While extractors in the OpenLineage project have a getter method for operator names that they’re associated with, the default extractor looks for two specific methods in the operator itself and calls them directly if found. This means that implementation now consists of just two methods in your operator. + +Those methods are `get_openlineage_facets_on_start()` and `get_openlineage_facets_on_complete()`, called when the operator is first scheduled to run and when the operator has finished execution respectively. Either, or both, of the methods may be implemented by the operator. + +In the rest of this doc, you will see how to write these methods within an operator class called `DfToGcsOperator`. This operator moves a Dataframe from an arbitrary source table using a supplied Python callable to a specified path in GCS. Thorough understanding of the `__init__()` and `execute()` methods of the operator is not required, but an abbreviated version of each method is given below for context. The final two methods in the class are `get_openlineage_facets_on_start()` and `get_openlineage_facets_on_complete()`, which we will be implementing piece-by-piece in the rest of the doc. They are provided here in their entirety for completeness. + +```python +from openlineage.airflow.extractors.base import OperatorLineage +from openlineage.client.facet import ( + DataSourceDatasetFacet, + DocumentationJobFacet, + OwnershipJobFacet, + OwnershipJobFacetOwners, + SchemaDatasetFacet, + SchemaField, +) +from openlineage.client.run import Dataset + + +class DfToGcsOperator(): + def __init__( + self, + task_id, + python_callable, + data_source, + bucket=None, + table=None, + security_group, + pipeline_phase, + col_types=None, + check_cols=True, + **kwargs, + ): + """Initialize a DfToGcsOperator.""" + super().__init__(task_id=task_id, **kwargs) + self.python_callable = python_callable + self.data_source = data_source + self.table = table if table is not None else task_id + self.bucket = bucket + self.security_group = security_group + self.pipeline_phase = pipeline_phase + # col_types is a dict that stores expected column names and types, + self.col_types = col_types + self.check_cols = check_cols + + self.base_path = "/".join( + [self.security_group, self.pipeline_phase, self.data_source, self.table] + ) + # Holds meta information about the dataframe, col names and col types, + # that are used in the extractor. + self.df_meta = None + + def execute(self, context): + """ + Run a DfToGcs task. + + The task will run the python_callable and save + the resulting dataframe to GCS under the proper object path + ////. + """ + ... + + df = get_python_callable_result(self.python_callable, context) + if len(df) > 0: + df.columns = [clean_column_name(c) for c in df.columns] + if self.col_types and self.check_cols: + check_cols = [c.lower().strip() for c in self.col_types.keys()] + missing = [m for m in check_cols if m not in df.columns] + assert ( + len(missing) == 0 + ), "Columns present in col_types but not in DataFrame: " + ",".join( + missing + ) + + # ----------- # + # Save to GCS # + # ----------- # + + # Note: this is an imported helper function. + df_to_gcs(df, self.bucket, save_to_path) + + # ----------- # + # Return Data # + # ----------- # + + # Allow us to extract additional lineage information + # about all of the fields available in the dataframe + self.df_meta = extract_df_fields(df) + else: + print("Empty dataframe, no artifact saved to GCS.") + + def extract_df_fields(df): + from openlineage.common.dataset import SchemaField + """Extract a list of SchemaFields from a DataFrame.""" + fields = [] + for (col, dtype) in zip(df.columns, df.dtypes): + fields.append(SchemaField(name=col, type=str(dtype))) + return fields + + def get_openlineage_facets_on_start(self): + """Add lineage to DfToGcsOperator on task start.""" + if not self.bucket: + ol_bucket = get_env_bucket() + else: + ol_bucket = self.bucket + + input_uri = "://".join([self.data_source, self.table]) + input_source = DataSourceDatasetFacet( + name=self.table, + uri=input_uri, + ) + + input_facet = { + "datasource": input_source, + "schema": SchemaDatasetFacet( + fields=[ + SchemaField(name=col_name, type=col_type) + for col_name, col_type in self.col_types.items() + ] + ), + } + + input = Dataset(namespace=self.data_source, name=self.table, facets=input_facet) + + output_namespace = "gs://" + ol_bucket + output_name = self.base_path + output_uri = "/".join( + [ + output_namespace, + output_name, + ] + ) + + output_source = DataSourceDatasetFacet( + name=output_name, + uri=output_uri, + ) + + output_facet = { + "datasource": output_source, + "schema": SchemaDatasetFacet( + fields=[ + SchemaField(name=col_name, type=col_type) + for col_name, col_type in self.col_types.items() + ] + ), + } + + output = Dataset( + namespace=output_namespace, + name=output_name, + facets=output_facet, + ) + + return OperatorLineage( + inputs=[input], + outputs=[output], + run_facets={}, + job_facets={ + "documentation": DocumentationJobFacet( + description=f""" + Takes data from the data source {input_uri} + and puts it in GCS at the path: {output_uri} + """ + ), + "ownership": OwnershipJobFacet( + owners=[OwnershipJobFacetOwners(name=self.owner, type=self.email)] + ), + } + ) + + def get_openlineage_facets_on_complete(self, task_instance): + """Add lineage to DfToGcsOperator on task completion.""" + starting_facets = self.get_openlineage_facets_on_start() + if task_instance.task.df_meta is not None: + for i in starting_facets.inputs: + i.facets["SchemaDatasetFacet"].fields = task_instance.task.df_meta + else: + starting_facets.run_facets = { + "errorMessage": ErrorMessageRunFacet( + message="Empty dataframe, no artifact saved to GCS.", + programmingLanguage="python" + ) + } + return starting_facets +``` + +## Implementing lineage in an operator + +Not surprisingly, you will need an operator class to implement lineage collection in an operator. Here, we’ll use the `DfToGcsOperator`, a custom operator created by the Astronomer Data team to load arbitrary dataframes to our GCS bucket. We’ll implement both `get_openlineage_facets_on_start()` and `get_openlineage_facets_on_complete()` for our custom operator. The specific details of the implementation will vary from operator to operator, but there will always be five basic steps that these functions will share. + +Both the methods return an `OperatorLineage` object, which itself is a collection of facets. Four of the five steps mentioned above are creating these facets where necessary, and the fifth is creating the `DataSourceDatasetFacet`. First, though, we’ll need to import some OpenLineage objects: + +```python +from openlineage.airflow.extractors.base import OperatorLineage +from openlineage.client.facet import ( + DataSourceDatasetFacet, + SchemaDatasetFacet, + SchemaField, +) +from openlineage.client.run import Dataset +``` + +Now, we’ll start building the facets for the `OperatorLineage` object in the `get_openlineage_facets_on_start()` method. + +### 1. `DataSourceDatasetFacet` + +The `DataSourceDatasestFacet` is a simple object, containing two fields, `name` and `uri`, which should be populated with the unique name of the data source and the URI. We’ll make two of these objects, an `input_source` to specify where the data came from and an `output_source` to specify where the data is going. + +A quick note about the philosophy behind the `name` and `uri` in the OpenLineage spec: the `uri` is built from the `namespace` and the `name`, and each is expected to be unique with respect to its environment. This means a `namespace` should be globally unique in the OpenLineage universe, and the `name` unique within the `namespace`. The two are then concatenated to form the `uri`, so that `uri = namespace + name`. The full naming spec can be found [here](https://github.com/OpenLineage/OpenLineage/blob/main/spec/Naming.md). + +In our case, the input `name` will be the table we are pulling data from, `self.table`, and the `namespace` will be our `self.data_source`. + +```python +input_source = DataSourceDatasetFacet( + name=self.table, + uri="://".join([self.data_source, self.table]), +) +``` + +The output data source object’s `name` will always be the base path given to the operator, `self.base_path`. The `namespace` is always in GCS, so we use the OpenLineage spec’s `gs://` as the scheme and our bucket as the authority, giving us `gs://{ol_bucket}`. The `uri` is simply the concatenation of the two. + +```python +if not self.bucket: + ol_bucket = get_env_bucket() +else: + ol_bucket = self.bucket + +output_namespace = "gs://" + ol_bucket +output_name = self.base_path +output_uri = "/".join( + [ + output_namespace, + output_name, + ] +) + +output_source = DataSourceDatasetFacet( + name=output_name, + uri=output_uri, +) +``` + +### 2. Inputs + +Next we’ll create the input dataset object. As we are moving data from a dataframe to GCS in this operator, we’ll make sure that we are capturing all the info in the dataframe being extracted in a `Dataset`. To create the `Dataset` object, we’ll need `namespace`, `name`, and `facets` objects. The first two are strings, and `facets` is a dictionary. + +Our `namespace` will come from the operator, where we use `self.data_source` again. The `name` parameter for this facet will be the table, again coming from the operator’s parameter list. The `facets` will contain two entries, the first being our `DataSourceDatasetFacet` with the key "datasource" coming from the previous step and `input_source` being the value. The second has the key "schema", with the value being a `SchemaDatasetFacet`, which itself is a collection of `SchemaField` objects, one for each column, created via a list comprehension over the operator's `self.col_types` parameter. + +The `inputs` parameter to `OperatorLineage` is a list of `Dataset` objects, so we’ll end up adding a single `Dataset` object to the list later. The creation of the `Dataset` object looks like the following: + +```python +input_facet = { + "datasource": input_source, + "schema": SchemaDatasetFacet( + fields=[ + SchemaField(name=col_name, type=col_type) + for col_name, col_type in self.col_types.items() + ] + ), +} + +input = Dataset(namespace=self.data_source, name=self.table, facets=input_facet) +``` + +### 3. Outputs + +Our output facet will closely resemble the input facet, except it will use the `output_source` we previously created, and will also have a different `namespace`. Our output facet object will be built as follows: + +```python +output_facet = { + "datasource": output_source, + "schema": SchemaDatasetFacet( + fields=[ + SchemaField(name=col_name, type=col_type) + for col_name, col_type in self.col_types.items() + ] + ), +} + +output = Dataset( + namespace=output_namespace, + name=output_name, + facets=output_facet, +) +``` + +### 4. Job facets + +A Job in OpenLineage is a process definition that consumes and produces datasets. The Job evolves over time, and this change is captured when the Job runs. This means the facets we would want to capture in the Job level are independent of the state of the Job. Custom facets can be created to capture this Job data. For our operator, we went with pre-existing job facets, the `DocumentationJobFacet` and the `OwnershipJobFacet`: + +```python +job_facets = { + "documentation": DocumentationJobFacet( + description=f""" + Takes data from the data source {input_uri} + and puts it in GCS at the path: {output_uri} + """ + ), + "ownership": OwnershipJobFacet( + owners=[OwnershipJobFacetOwners(name=self.owner, type=self.email)] + ) +} +``` + +### 5. Run facets + +A Run is an instance of a Job execution. For example, when an Airflow Operator begins execution, the Run state of the OpenLineage Job transitions to Start, then to Running. When writing an emitter, this means a Run facet should contain information pertinent to the specific instance of the Job, something that could change every Run. + +In this example, we will output an error message when there is an empty dataframe, using the existing `ErrorMessageRunFacet`. + +```python +starting_facets.run_facets = { + "errorMessage": ErrorMessageRunFacet( + message="Empty dataframe, no artifact saved to GCS.", + programmingLanguage="python" + ) +} +``` + +### 6. On complete + +Finally, we’ll implement the `get_openlineage_metadata_on_complete()` method. Most of our work has already been done for us, so we will start by calling `get_openlineage_metadata_on_start()` and then modifying the returned object slightly before returning it again. The two main additions here are replacing the original `SchemaDatasetFacet` fields and adding a potential error message to the `run_facets`. + +For the `SchemaDatasetFacet` update, we replace the old fields facet with updated ones based on the now-filled-out `df_meta` dict, which is populated during the operator’s `execute()` method and is therefore unavailable to `get_openlineage_metadata_on_start()`. Because `df_meta` is already a list of `SchemaField` objects, we can set the property directly. Although we use a for loop here, the operator ensures only one dataframe will ever be extracted per execution, so the for loop will only ever run once and we therefore do not have to worry about multiple input dataframes updating. + +The `run_facets` update is performed only if there is an error, which is a mutually exclusive event to updating the fields facets. We pass the same message to this facet that is printed in the `execute()` method when an empty dataframe is found. This error message does not halt operator execution, as it gets added *****after***** execution, but it does create an alert in the Marquez UI. + +```python +def get_openlineage_facets_on_complete(self, task_instance): + """Add lineage to DfToGcsOperator on task completion.""" + starting_facets = self.get_openlineage_facets_on_start() + if task_instance.task.df_meta is not None: + for i in starting_facets.inputs: + i.facets["SchemaDatasetFacet"].fields = task_instance.task.df_meta + else: + starting_facets.run_facets = { + "errorMessage": ErrorMessageRunFacet( + message="Empty dataframe, no artifact saved to GCS.", + programmingLanguage="python" + ) + } + return starting_facets +``` + +And with that final piece of the puzzle, we have a working implementation of lineage extraction from our custom operator! + +### Custom Facets + +The OpenLineage spec might not contain all the facets you need to write your extractor, in which case you will have to make your own [custom facets](https://openlineage.io/docs/spec/facets/custom-facets). More on creating custom facets can be found [here](https://openlineage.io/blog/extending-with-facets/). + +### Testing + +For information about testing your implementation, see the doc on [testing custom extractors](https://openlineage.io/docs/integrations/airflow/extractors/extractor-testing). diff --git a/versioned_docs/version-1.24.1/integrations/airflow/extractors/_category_.json b/versioned_docs/version-1.24.1/integrations/airflow/extractors/_category_.json new file mode 100644 index 0000000..0064691 --- /dev/null +++ b/versioned_docs/version-1.24.1/integrations/airflow/extractors/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Extractors", + "position": 6 +} diff --git a/versioned_docs/version-1.24.1/integrations/airflow/extractors/custom-extractors.md b/versioned_docs/version-1.24.1/integrations/airflow/extractors/custom-extractors.md new file mode 100644 index 0000000..9bb1280 --- /dev/null +++ b/versioned_docs/version-1.24.1/integrations/airflow/extractors/custom-extractors.md @@ -0,0 +1,121 @@ +--- +sidebar_position: 1 +title: Custom Extractors +--- + +:::caution +This page is about Airflow's external integration that works mainly for Airflow versions \<2.7. +[If you're using Airflow 2.7+, look at native Airflow OpenLineage provider documentation.](https://airflow.apache.org/docs/apache-airflow-providers-openlineage/stable/index.html)

+ +The ongoing development and enhancements will be focused on the `apache-airflow-providers-openlineage` package, +while the `openlineage-airflow` will primarily be updated for bug fixes. See [all Airflow versions supported by this integration](../older.md#supported-airflow-versions) +::: + +This integration works by detecting which Airflow operators your DAG is using, and extracting lineage data from them using corresponding extractors. + +However, not all operators are covered. In particular, third party providers may not be. To handle this situation, OpenLineage allows you to provide custom extractors for any operators where there is not one built-in. + +If you want to extract lineage from your own Operators, you may prefer directly implementing [lineage support as described here](../default-extractors.md). + + +## Interface + +Custom extractors have to derive from `BaseExtractor`. + +Extractors have three methods to implement: `extract`, `extract_on_complete` and `get_operator_classnames`. +The last one is a classmethod that is used to provide list of operators that your extractor can get lineage from. + +For example: + +```python +@classmethod +def get_operator_classnames(cls) -> List[str]: + return ['PostgresOperator'] +``` + +If the name of the operator matches one of the names on the list, the extractor will be instantiated - with operator +provided in the extractor's `self.operator` property - and both `extract` and `extract_on_complete` methods will be called. +They are used to provide actual information data. The difference is that `extract` is called before operator's `execute` +method, while `extract_on_complete` is called after. This can be used to extract any additional information that the operator +sets on it's own properties. Good example is `SnowflakeOperator` that sets `query_ids` after execution. + +Both methods return `TaskMetadata` structure: + +```python +@attr.s +class TaskMetadata: + name: str = attr.ib() # deprecated + inputs: List[Dataset] = attr.ib(factory=list) + outputs: List[Dataset] = attr.ib(factory=list) + run_facets: Dict[str, BaseFacet] = attr.ib(factory=dict) + job_facets: Dict[str, BaseFacet] = attr.ib(factory=dict) +``` + +Inputs and outputs are lists of plain [OpenLineage datasets](../../../client/python.md) + +`run_facets` and `job_facets` are dictionaries of optional [JobFacets](../../../client/python.md) and [RunFacets](../../../client/python.md) that would be attached to the job - for example, +you might want to attach `SqlJobFacet` if your operator is executing SQL. + +To learn more about facets in OpenLineage, please visit this [section](../../../spec/facets). + + +## Registering custom extractor + +OpenLineage integration does not know that you've provided an extractor unless you'll register it. + +The way to do that is to add them to `OPENLINEAGE_EXTRACTORS` environment variable. +``` +OPENLINEAGE_EXTRACTORS=full.path.to.ExtractorClass +``` + +If you have multiple custom extractors, separate the paths with comma `(;)` +``` +OPENLINEAGE_EXTRACTORS=full.path.to.ExtractorClass;full.path.to.AnotherExtractorClass +``` + +Optionally, you can separate them with whitespace. It's useful if you're providing them as part of some YAML file. + +``` +OPENLINEAGE_EXTRACTORS: >- + full.path.to.FirstExtractor; + full.path.to.SecondExtractor +``` + +Remember to make sure that the path is importable for scheduler and worker. + +## Adding extractor to OpenLineage Airflow integration package + +All Openlineage extractors are defined in [this path](https://github.com/OpenLineage/OpenLineage/blob/main/integration/airflow/openlineage/airflow/extractors). +In order to add new extractor you should put your code in this directory. Additionally, you need to add the class to `_extractors` list in [extractors.py](https://github.com/OpenLineage/OpenLineage/blob/main/integration/airflow/openlineage/airflow/extractors/extractors.py), e.g.: + +```python +_extractors = list( + filter( + lambda t: t is not None, + [ + try_import_from_string( + 'openlineage.airflow.extractors.postgres_extractor.PostgresExtractor' + ), + ... # other extractors are listed here ++ try_import_from_string( ++ 'openlineage.airflow.extractors.new_extractor.ExtractorClass' ++ ), + ] + ) +) +``` + +## Debugging issues + +There are two common problems associated with custom extractors. +First, is wrong path provided to `OPENLINEAGE_EXTRACTORS`. +The path needs to be exactly the same as one you'd use from your code. If the path is wrong or non-importable from worker, +plugin will fail to load the extractors and proper OpenLineage events for that operator won't be emitted. + +Second one, and maybe more insidious, are imports from Airflow. Due to the fact that OpenLineage code gets instantiated when +Airflow worker itself starts, any import from Airflow can be unnoticeably cyclical. This causes OpenLineage extraction to fail. + +To avoid this issue, import from Airflow only locally - in `extract` or `extract_on_complete` methods. If you need imports for +type checking, guard them behind `typing.TYPE_CHECKING`. + +You can also check [Development section](../../../development/developing/) to learn more about how to setup development environment and create tests. \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/integrations/airflow/extractors/extractor-testing.md b/versioned_docs/version-1.24.1/integrations/airflow/extractors/extractor-testing.md new file mode 100644 index 0000000..0a891cf --- /dev/null +++ b/versioned_docs/version-1.24.1/integrations/airflow/extractors/extractor-testing.md @@ -0,0 +1,109 @@ +--- +sidebar_position: 2 +title: Testing Custom Extractors +--- + +:::caution +This page is about Airflow's external integration that works mainly for Airflow versions \<2.7. +[If you're using Airflow 2.7+, look at native Airflow OpenLineage provider documentation.](https://airflow.apache.org/docs/apache-airflow-providers-openlineage/stable/index.html)

+ +The ongoing development and enhancements will be focused on the `apache-airflow-providers-openlineage` package, +while the `openlineage-airflow` will primarily be updated for bug fixes. See [all Airflow versions supported by this integration](../older.md#supported-airflow-versions) +::: + +OpenLineage comes with a variety of extractors for Airflow operators out of the box, but not every operator is covered. And if you are using a custom operator you or your team wrote, you'll certainly need to write a custom extractor. This guide will walk you through how to set up testing in a local dev environment, the most important data structures to write tests for, unit testing private functions, and some notes on troubleshooting. + +We assume prior knowledge of writing custom extractors. For details on multiple ways to write extractors, check out the Astronomer blog on [extractors](https://www.astronomer.io/blog/3-ways-to-extract-data-lineage-from-airflow/#using-custom-extractors-for-airflow-operators). This post builds on [Pursuing Lineage from Airflow using Custom Extractors](https://openlineage.io/blog/extractors/), and it is recommended to read that post first. To learn more about how Operators and Extractors work together under the hood, check out this [guide](https://openlineage.io/blog/operators-and-extractors-technical-deep-dive/). + +## Testing set-up + +We’ll use the same extractor that we built in the blog post, the `RedshiftDataExtractor`. When testing an extractor, we want to verify a few different sets of assumptions. The first set of assumptions are about the `TaskMetadata` object being created, specifically verifying that the object is being built with the correct input and output datasets and relevant facets. This is done in OpenLineage via pytest, with appropriate mocking and patching for connections and objects. In the OpenLineage repository, extractor unit tests are found in under `[integration/airflow/tests](https://github.com/OpenLineage/OpenLineage/tree/main/integration/airflow/tests)`. For custom extractors, these tests should go under a `tests` directory at the top level of your project hierarchy. + +![An Astro project directory structure, with extractors in an `extractors`/ folder under `include/`, and tests under a top-level `tests/` folder.](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/95581136-2c1e-496a-ba51-a9b70256e004/Untitled.png) + +An Astro project directory structure, with extractors in an `extractors`/ folder under `include/`, and tests under a top-level `tests/` folder. + +### Testing the TaskMetadata object + +For the `RedshiftDataExtractor`, this core extract test is actually run on `extract_on_complete()`, as the `extract()` method is empty. We’ll walk through a test function to see how we can ensure the output dataset is being built as expected (full test code [here](https://github.com/OpenLineage/OpenLineage/blob/main/integration/airflow/tests/extractors/test_redshift_data_extractor.py)) + +```python +# First, we add patching to mock our connection to Redshift. +@mock.patch( + "airflow.providers.amazon.aws.operators.redshift_data.RedshiftDataOperator.hook", + new_callable=PropertyMock, +) +@mock.patch("botocore.client") +def test_extract_e2e(self, mock_client, mock_hook): + # Mock the descriptions we can expect from a real call. + mock_client.describe_statement.return_value = self.read_file_json( + "tests/extractors/redshift_statement_details.json" + ) + mock_client.describe_table.return_value = self.read_file_json( + "tests/extractors/redshift_table_details.json" + ) + # Finish setting mock objects' expected values. + job_id = "test_id" + mock_client.execute_statement.return_value = {"Id": job_id} + mock_hook.return_value.conn = mock_client + + # Set the extractor and ensure that the extract() method is not returning anything, as expected. + extractor = RedshiftDataExtractor(self.task) + task_meta_extract = extractor.extract() + assert task_meta_extract is None + + # Run an instance of RedshiftDataOperator with the predefined test values. + self.ti.run() + + # Run extract_on_complete() with the task instance object. + task_meta = extractor.extract_on_complete(self.ti) + + # Assert that the correct job_id was used in the client call. + mock_client.describe_statement.assert_called_with(Id=job_id) + + # Assert there is a list of output datasets. + assert task_meta.outputs + # Assert there is only dataset in the list. + assert len(task_meta.outputs) == 1 + # Assert the output dataset name is the same as the table created by the operator query. + assert task_meta.outputs[0].name == "dev.public.fruit" + # Assert the output dataset has a parsed schema. + assert task_meta.outputs[0].facets["schema"].fields is not None + # Assert the datasource is the correct Redshift URI. + assert ( + task_meta.outputs[0].facets["dataSource"].name + == f"redshift://{CLUSTER_IDENTIFIER}.{REGION_NAME}:5439" + ) + # Assert the uri is None (as it already exists in dataSource). + assert task_meta.outputs[0].facets["dataSource"].uri is None + # Assert the schema fields match the number of fields of the table created by the operator query. + assert len(task_meta.outputs[0].facets["schema"].fields) == 3 + # Assert the output statistics match the results of the operator query. + assert ( + OutputStatisticsOutputDatasetFacet( + rowCount=1, + size=11, + ) == task_meta.outputs[0].facets['stats'] + ) +``` + +Most of the assertions above are straightforward, yet all are important in ensuring that no unexpected behavior occurs when building the metadata object. Testing each facet is important, as data or graphs in the UI can render incorrectly if the facets are wrong. For example, if the `task_meta.outputs[0].facets["dataSource"].name` is created incorrectly in the extractor, then the operator’s task will not show up in the lineage graph, creating a gap in pipeline observability. + +### Testing private functions + +Private functions with any complexity beyond returning a string should be unit tested as well. An example of this is the `_get_xcom_redshift_job_id()` private function in the `RedshiftDataExtractor`. The unit test is shown below: + +```python +@mock.patch("airflow.models.TaskInstance.xcom_pull") +def test_get_xcom_redshift_job_id(self, mock_xcom_pull): + self.extractor._get_xcom_redshift_job_id(self.ti) + mock_xcom_pull.assert_called_once_with(task_ids=self.ti.task_id) +``` + +Unit tests do not have to be particularly complex, and in this instance the single assertion is enough to cover the expected behavior that the function was called only once. + +### Troubleshooting + +Even with unit tests, an extractor may still not be operating as expected. The easiest way to tell if data isn’t coming through correctly is if the UI elements are not showing up correctly in the Lineage tab. + +When testing code locally, Marquez can be used to inspect the data being emitted—or ***not*** being emitted. Using Marquez will allow you to figure out if the error is being caused by the extractor or the API. If data is being emitted from the extractor as expected but isn’t making it to the UI, then the extractor is fine and an issue should be opened up in OpenLineage. However, if data is not being emitted properly, it is likely that more unit tests are needed to cover extractor behavior. Marquez can help you pinpoint which facets are not being formed properly so you know where to add test coverage. diff --git a/versioned_docs/version-1.24.1/integrations/airflow/job-hierarchy.md b/versioned_docs/version-1.24.1/integrations/airflow/job-hierarchy.md new file mode 100644 index 0000000..c8491ad --- /dev/null +++ b/versioned_docs/version-1.24.1/integrations/airflow/job-hierarchy.md @@ -0,0 +1,22 @@ +--- +sidebar_position: 6 +title: Job Hierarchy +--- + +:::caution +This page is about Airflow's external integration that works mainly for Airflow versions \<2.7. +[If you're using Airflow 2.7+, look at native Airflow OpenLineage provider documentation.](https://airflow.apache.org/docs/apache-airflow-providers-openlineage/stable/index.html)

+ +The ongoing development and enhancements will be focused on the `apache-airflow-providers-openlineage` package, +while the `openlineage-airflow` will primarily be updated for bug fixes. See [all Airflow versions supported by this integration](older.md#supported-airflow-versions) +::: + +## Job Hierarchy + +Apache Airflow features an inherent job hierarchy: DAGs, large and independently schedulable units, comprise smaller, executable tasks. + +OpenLineage reflects this structure in its Job Hierarchy model. +Upon DAG scheduling, a START event is emitted. +Subsequently, each task triggers START events at TaskInstance start and COMPLETE/FAILED events upon completion, following Airflow's task order. +Finally, upon DAG termination, a completion event (COMPLETE or FAILED) is emitted. +TaskInstance events' ParentRunFacet references the originating DAG run. \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/integrations/airflow/manual.md b/versioned_docs/version-1.24.1/integrations/airflow/manual.md new file mode 100644 index 0000000..b3a40d0 --- /dev/null +++ b/versioned_docs/version-1.24.1/integrations/airflow/manual.md @@ -0,0 +1,101 @@ +--- +sidebar_position: 5 +title: Manually Annotated Lineage +--- + +:::caution +This page is about Airflow's external integration that works mainly for Airflow versions \<2.7. +[If you're using Airflow 2.7+, look at native Airflow OpenLineage provider documentation.](https://airflow.apache.org/docs/apache-airflow-providers-openlineage/stable/index.html)

+ +The ongoing development and enhancements will be focused on the `apache-airflow-providers-openlineage` package, +while the `openlineage-airflow` will primarily be updated for bug fixes. See [all Airflow versions supported by this integration](older.md#supported-airflow-versions) +::: + +:::caution +This feature is only supported with Airflow versions greater than 2.1.0) +::: + +Airflow allows operators to track lineage by specifying the input and outputs of the operators via inlets and outlets. OpenLineage tries to find the input and output datasets of the Airflow job via provided extractors or custom extractors. As fallback, if it fails to find any input or output datasets, then OpenLineage defaults to inlets and outlets of Airflow jobs. + + +OpenLineage supports automated lineage extraction only for selective operators. For other operators and custom-defined ones, users need to write their own custom extractors (by implementing `extract` / `extract_on_complete` method) for Airflow operators that indicate the input and output dataset of the corresponding task. +This can be circumvented by specifying the input and output datasets using operator's inlets and outlets. OpenLineage will default to use inlets and outlets as input/output datasets if it cannot find any successful extraction from the extractors. + +While specifying the DAG, inlets and outlets can be provided as lists of Tables for every operator. + +:::note +Airflow supports inlets and outlets to be either a Table, Column, File or User entity. However, currently OpenLineage only extracts lineage via Table entity* +::: + +## Example + +An operator insider the Airflow DAG can be annotated with inlets and outlets like - + +``` +"""Example DAG demonstrating the usage of the extraction via Inlets and Outlets.""" + +import pendulum +import datetime + +from airflow import DAG +from airflow.operators.bash import BashOperator +from airflow.lineage.entities import Table, File + +def create_table(cluster, database, name): + return Table( + database=database, + cluster=cluster, + name=name, + ) + +t1 = create_table("c1", "d1", "t1") +t2 = create_table("c1", "d1", "t2") +t3 = create_table("c1", "d1", "t3") +t4 = create_table("c1", "d1", "t4") +f1 = File(url = "http://randomfile") + +with DAG( + dag_id='example_operator', + schedule_interval='0 0 * * *', + start_date=pendulum.datetime(2021, 1, 1, tz="UTC"), + dagrun_timeout=datetime.timedelta(minutes=60), + params={"example_key": "example_value"}, +) as dag: + task1 = BashOperator( + task_id='task_1_with_inlet_outlet', + bash_command='echo "{{ task_instance_key_str }}" && sleep 1', + inlets=[t1, t2], + outlets=[t3], + ) + + task2 = BashOperator( + task_id='task_2_with_inlet_outlet', + bash_command='echo "{{ task_instance_key_str }}" && sleep 1', + inlets=[t3, f1], + outlets=[t4], + ) + + task1 >> task2 + +if __name__ == "__main__": + dag.cli() +``` + +--- + +The corresponding lineage graph will be - + + +marquez_lineage + +(The image is shown with the **Marquez** UI (metadata collector of OpenLineage events). More info can be found [here](https://marquezproject.github.io/marquez/). + +Also note that the *File* entity is not captured by the lineage event currently. + +--- + +## Conversion from Airflow Table entity to Openlineage Dataset + +The naming convention followed here is: +1. `CLUSTER` of the table entity becomes the namespace of OpenLineage's Dataset +2. The name of the dataset is formed by `{{DATABASE}}.{{NAME}}` where `DATABASE` and `NAME` are attributes specified by Airflow's Table entity. diff --git a/versioned_docs/version-1.24.1/integrations/airflow/older.md b/versioned_docs/version-1.24.1/integrations/airflow/older.md new file mode 100644 index 0000000..2054a5b --- /dev/null +++ b/versioned_docs/version-1.24.1/integrations/airflow/older.md @@ -0,0 +1,49 @@ +--- +sidebar_position: 2 +title: Supported Airflow versions +--- + +:::caution +This page is about Airflow's external integration that works mainly for Airflow versions \<2.7. +[If you're using Airflow 2.7+, look at native Airflow OpenLineage provider documentation.](https://airflow.apache.org/docs/apache-airflow-providers-openlineage/stable/index.html)

+ +The ongoing development and enhancements will be focused on the `apache-airflow-providers-openlineage` package, +while the `openlineage-airflow` will primarily be updated for bug fixes. +::: + +#### SUPPORTED AIRFLOW VERSIONS + +##### Airflow 2.7+ + +This package **should not** be used starting with Airflow 2.7.0 and **can not** be used with Airflow 2.8+. +It was designed as Airflow's external integration that works mainly for Airflow versions \<2.7. +For Airflow 2.7+ use the native Airflow OpenLineage provider +[package](https://airflow.apache.org/docs/apache-airflow-providers-openlineage) `apache-airflow-providers-openlineage`. + +##### Airflow 2.3 - 2.6 + +The integration automatically registers itself starting from Airflow 2.3 if it's installed on the Airflow worker's Python. +This means you don't have to do anything besides configuring where the events are sent, which is described in the [configuration](#configuration) section. + +##### Airflow 2.1 - 2.2 + +> **_NOTE:_** The last version of openlineage-airflow to support Airflow versions 2.1-2.2 is **1.14.0** + +
+ +Integration for those versions has limitations: it does not support tracking failed jobs, +and job starts are registered only when a job ends (a `LineageBackend`-based approach collects all metadata +for a task on each task's completion). + +To make OpenLineage work, in addition to installing `openlineage-airflow` you need to set your `LineageBackend` +in your [airflow.cfg](https://airflow.apache.org/docs/apache-airflow/stable/howto/set-config.html) or via environmental variable `AIRFLOW__LINEAGE__BACKEND` to + +``` +openlineage.lineage_backend.OpenLineageBackend +``` + +The OpenLineageBackend does not take into account manually configured inlets and outlets. + +##### Airflow \<2.1 + +OpenLineage does not work with versions older than Airflow 2.1. diff --git a/versioned_docs/version-1.24.1/integrations/airflow/preflight-check-dag.md b/versioned_docs/version-1.24.1/integrations/airflow/preflight-check-dag.md new file mode 100644 index 0000000..421ec91 --- /dev/null +++ b/versioned_docs/version-1.24.1/integrations/airflow/preflight-check-dag.md @@ -0,0 +1,338 @@ +--- +sidebar_position: 3 +title: Preflight check DAG +--- +# Preflight Check DAG + +## Purpose + +The preflight check DAG is created to verify the setup of OpenLineage within an Airflow environment. It checks the Airflow version, the version of the installed OpenLineage package, and the configuration settings read by the OpenLineage listener. This validation is crucial because, after setting up OpenLineage with Airflow and configuring necessary environment variables, users need confirmation that the setup is correctly done to start receiving OL events. + +## Configuration Variables + +The DAG introduces two configurable variables that users can set according to their requirements: + +- `BYPASS_LATEST_VERSION_CHECK`: Set this to `True` to skip checking for the latest version of the OpenLineage package. This is useful when accessing the PyPI URL is not possible or if users prefer not to upgrade. +- `LINEAGE_BACKEND`: This variable specifies the backend used for OpenLineage events ingestion. By default, it is set to `MARQUEZ`. Users utilizing a custom backend for OpenLineage should implement custom checks within the `_verify_custom_backend` function. + +## Implementation + +The DAG comprises several key functions, each designed to perform specific validations: + +1. **Version Checks**: It validates the installed OpenLineage package against the latest available version on PyPI, considering the `BYPASS_LATEST_VERSION_CHECK` flag. +2. **Airflow Version Compatibility**: Ensures that the Airflow version is compatible with OpenLineage. OpenLineage requires Airflow version 2.1 or newer. +3. **Transport and Configuration Validation**: Checks if necessary transport settings and configurations are set for OpenLineage to communicate with the specified backend. +4. **Backend Connectivity**: Verifies the connection to the specified `LINEAGE_BACKEND` to ensure that OpenLineage can successfully send events. +5. **Listener Accessibility and OpenLineage Plugin Checks**: Ensures that the OpenLineage listener is accessible and that OpenLineage is not disabled (by [environment variable](https://airflow.apache.org/docs/apache-airflow-providers-openlineage/stable/guides/user.html#:~:text=OPENLINEAGE_DISABLED%20is%20an%20equivalent%20of%20AIRFLOW__OPENLINEAGE__DISABLED.) or [config](https://airflow.apache.org/docs/apache-airflow-providers-openlineage/stable/guides/user.html#disable)). + +### DAG Tasks + +The DAG defines three main tasks that sequentially execute the above validations: + +1. `validate_ol_installation`: Confirms that the OpenLineage installation is correct and up-to-date. +2. `is_ol_accessible_and_enabled`: Checks if OpenLineage is accessible and enabled within Airflow. +3. `validate_connection`: Verifies the connection to the specified lineage backend. + +### Setup and Execution + +To use this DAG: + +1. Ensure that OpenLineage is installed within your Airflow environment. +2. Set the necessary environment variables for OpenLineage, such as the namespace and the URL or transport mechanism using [provider package docs](https://airflow.apache.org/docs/apache-airflow-providers-openlineage/stable/guides/user.html) or [OL docs](https://openlineage.io/docs/integrations/airflow/usage). +3. Configure the `BYPASS_LATEST_VERSION_CHECK` and `LINEAGE_BACKEND` variables as needed. +4. Add the DAG file to your Airflow DAGs folder. +5. Trigger the DAG manually or just enable it and allow it to run once automatically based on its schedule (@once) to perform the preflight checks. + +## Preflight check DAG code +```python +from __future__ import annotations + +import logging +import os +import attr + +from packaging.version import Version + +from airflow import DAG +from airflow.configuration import conf +from airflow import __version__ as airflow_version +from airflow.operators.python import PythonOperator +from airflow.utils.dates import days_ago + +# Set this to True to bypass the latest version check for OpenLineage package. +# Version check will be skipped if unable to access PyPI URL +BYPASS_LATEST_VERSION_CHECK = False +# Update this to `CUSTOM` if using any other backend for OpenLineage events ingestion +# When using custom transport - implement custom checks in _verify_custom_backend function +LINEAGE_BACKEND = "MARQUEZ" + +log = logging.getLogger(__name__) + + +def _get_latest_package_version(library_name: str) -> Version | None: + try: + import requests + + response = requests.get(f"https://pypi.org/pypi/{library_name}/json") + response.raise_for_status() + version_string = response.json()["info"]["version"] + return Version(version_string) + except Exception as e: + log.error(f"Failed to fetch latest version for `{library_name}` from PyPI: {e}") + return None + + +def _get_installed_package_version(library_name) -> Version | None: + try: + from importlib.metadata import version + + return Version(version(library_name)) + except Exception as e: + raise ModuleNotFoundError(f"`{library_name}` is not installed") from e + + +def _provider_can_be_used() -> bool: + parsed_version = Version(airflow_version) + if parsed_version < Version("2.1"): + raise RuntimeError("OpenLineage is not supported in Airflow versions <2.1") + elif parsed_version >= Version("2.7"): + return True + return False + + +def validate_ol_installation() -> None: + library_name = "openlineage-airflow" + if _provider_can_be_used(): + library_name = "apache-airflow-providers-openlineage" + + library_version = _get_installed_package_version(library_name) + if Version(airflow_version) >= Version("2.10.0") and library_version < Version("1.8.0"): + raise ValueError( + f"Airflow version `{airflow_version}` requires `{library_name}` version >=1.8.0. " + f"Installed version: `{library_version}` " + f"Please upgrade the package using `pip install --upgrade {library_name}`" + ) + if BYPASS_LATEST_VERSION_CHECK: + log.info(f"Bypassing the latest version check for `{library_name}`") + return + + latest_version = _get_latest_package_version(library_name) + if latest_version is None: + log.warning(f"Failed to fetch the latest version for `{library_name}`. Skipping version check.") + return + + if library_version < latest_version: + raise ValueError( + f"`{library_name}` is out of date. " + f"Installed version: `{library_version}`, " + f"Required version: `{latest_version}`" + f"Please upgrade the package using `pip install --upgrade {library_name}` or set BYPASS_LATEST_VERSION_CHECK to True" + ) + + +def _is_transport_set() -> None: + transport = conf.get("openlineage", "transport", fallback="") + if transport: + raise ValueError( + "Transport value found: `%s`\n" + "Please check the format at " + "https://openlineage.io/docs/client/python/#built-in-transport-types", + transport, + ) + log.info("Airflow OL transport is not set.") + return + + +def _is_config_set(provider: bool = True) -> None: + if provider: + config_path = conf.get("openlineage", "config_path", fallback="") + else: + config_path = os.getenv("OPENLINEAGE_CONFIG", "") + + if config_path and not _check_openlineage_yml(config_path): + raise ValueError( + "Config file is empty or does not exist: `%s`", + config_path, + ) + + log.info("OL config is not set.") + return + + +def _check_openlineage_yml(file_path) -> bool: + file_path = os.path.expanduser(file_path) + if os.path.exists(file_path): + with open(file_path, "r") as file: + content = file.read() + if not content: + raise ValueError(f"Empty file: `{file_path}`") + raise ValueError( + f"File found at `{file_path}` with the following content: `{content}`. " + "Make sure there the configuration is correct." + ) + log.info("File not found: `%s`", file_path) + return False + + +def _check_http_env_vars() -> None: + from urllib.parse import urljoin + + final_url = urljoin(os.getenv("OPENLINEAGE_URL", ""), os.getenv("OPENLINEAGE_ENDPOINT", "")) + if final_url: + raise ValueError("OPENLINEAGE_URL and OPENLINEAGE_ENDPOINT are set to: %s", final_url) + log.info( + "OPENLINEAGE_URL and OPENLINEAGE_ENDPOINT are not set. " + "Please set up OpenLineage using documentation at " + "https://airflow.apache.org/docs/apache-airflow-providers-openlineage/stable/guides/user.html" + ) + return + + +def _debug_missing_transport(): + if _provider_can_be_used(): + _is_config_set(provider=True) + _is_transport_set() + _is_config_set(provider=False) + _check_openlineage_yml("openlineage.yml") + _check_openlineage_yml("~/.openlineage/openlineage.yml") + _check_http_env_vars() + raise ValueError("OpenLineage is missing configuration, please refer to the OL setup docs.") + + +def _is_listener_accessible(): + if _provider_can_be_used(): + try: + from airflow.providers.openlineage.plugins.openlineage import OpenLineageProviderPlugin as plugin + except ImportError as e: + raise ValueError("OpenLineage provider is not accessible") from e + else: + try: + from openlineage.airflow.plugin import OpenLineagePlugin as plugin + except ImportError as e: + raise ValueError("OpenLineage is not accessible") from e + + if len(plugin.listeners) == 1: + return True + + return False + + +def _is_ol_disabled(): + if _provider_can_be_used(): + try: + # apache-airflow-providers-openlineage >= 1.7.0 + from airflow.providers.openlineage.conf import is_disabled + except ImportError: + # apache-airflow-providers-openlineage < 1.7.0 + from airflow.providers.openlineage.plugins.openlineage import _is_disabled as is_disabled + else: + from openlineage.airflow.plugin import _is_disabled as is_disabled + + if is_disabled(): + if _provider_can_be_used() and conf.getboolean("openlineage", "disabled", fallback=False): + raise ValueError("OpenLineage is disabled in airflow.cfg: openlineage.disabled") + elif os.getenv("OPENLINEAGE_DISABLED", "false").lower() == "true": + raise ValueError( + "OpenLineage is disabled due to the environment variable OPENLINEAGE_DISABLED" + ) + raise ValueError( + "OpenLineage is disabled because required config/env variables are not set. " + "Please refer to " + "https://airflow.apache.org/docs/apache-airflow-providers-openlineage/stable/guides/user.html" + ) + return False + + +def _get_transport(): + if _provider_can_be_used(): + from airflow.providers.openlineage.plugins.openlineage import OpenLineageProviderPlugin + transport = OpenLineageProviderPlugin().listeners[0].adapter.get_or_create_openlineage_client().transport + else: + from openlineage.airflow.plugin import OpenLineagePlugin + transport = ( + OpenLineagePlugin.listeners[0].adapter.get_or_create_openlineage_client().transport + ) + return transport + +def is_ol_accessible_and_enabled(): + if not _is_listener_accessible(): + _is_ol_disabled() + + try: + transport = _get_transport() + except Exception as e: + raise ValueError("There was an error when trying to build transport.") from e + + if transport is None or transport.kind in ("noop", "console"): + _debug_missing_transport() + + +def validate_connection(): + transport = _get_transport() + config = attr.asdict(transport.config) + verify_backend(LINEAGE_BACKEND, config) + + +def verify_backend(backend_type: str, config: dict): + backend_type = backend_type.lower() + if backend_type == "marquez": + return _verify_marquez_http_backend(config) + elif backend_type == "atlan": + return _verify_atlan_http_backend(config) + elif backend_type == "custom": + return _verify_custom_backend(config) + raise ValueError(f"Unsupported backend type: {backend_type}") + + +def _verify_marquez_http_backend(config): + log.info("Checking Marquez setup") + ol_url = config["url"] + ol_endpoint = config["endpoint"] # "api/v1/lineage" + marquez_prefix_path = ol_endpoint[: ol_endpoint.rfind("/") + 1] # "api/v1/" + list_namespace_url = ol_url + "/" + marquez_prefix_path + "namespaces" + import requests + + try: + response = requests.get(list_namespace_url) + response.raise_for_status() + except Exception as e: + raise ConnectionError(f"Failed to connect to Marquez at `{list_namespace_url}`") from e + log.info("Airflow is able to access the URL") + + +def _verify_atlan_http_backend(config): + raise NotImplementedError("This feature is not implemented yet") + + +def _verify_custom_backend(config): + raise NotImplementedError("This feature is not implemented yet") + + +with DAG( + dag_id="openlineage_preflight_check_dag", + start_date=days_ago(1), + description="A DAG to check OpenLineage setup and configurations", + schedule_interval="@once", +) as dag: + validate_ol_installation_task = PythonOperator( + task_id="validate_ol_installation", + python_callable=validate_ol_installation, + ) + + is_ol_accessible_and_enabled_task = PythonOperator( + task_id="is_ol_accessible_and_enabled", + python_callable=is_ol_accessible_and_enabled, + ) + + validate_connection_task = PythonOperator( + task_id="validate_connection", + python_callable=validate_connection, + ) + + validate_ol_installation_task >> is_ol_accessible_and_enabled_task + is_ol_accessible_and_enabled_task >> validate_connection_task +``` + +## Conclusion + +The OpenLineage Preflight Check DAG serves as a vital tool for ensuring that the OpenLineage setup within Airflow is correct and fully operational. By following the instructions and configurations documented here, users can confidently verify their setup and start utilizing OpenLineage for monitoring and managing data lineage within their Airflow workflows. diff --git a/versioned_docs/version-1.24.1/integrations/airflow/usage.md b/versioned_docs/version-1.24.1/integrations/airflow/usage.md new file mode 100644 index 0000000..4815b21 --- /dev/null +++ b/versioned_docs/version-1.24.1/integrations/airflow/usage.md @@ -0,0 +1,83 @@ +--- +sidebar_position: 1 +title: Using the Airflow Integration +--- + +:::caution +This page is about Airflow's external integration that works mainly for Airflow versions \<2.7. +[If you're using Airflow 2.7+, look at native Airflow OpenLineage provider documentation.](https://airflow.apache.org/docs/apache-airflow-providers-openlineage/stable/index.html)

+ +The ongoing development and enhancements will be focused on the `apache-airflow-providers-openlineage` package, +while the `openlineage-airflow` will primarily be updated for bug fixes. See [all Airflow versions supported by this integration](older.md#supported-airflow-versions) +::: + +#### PREREQUISITES + +- [Python 3.8](https://www.python.org/downloads) +- [Airflow >= 2.1,\<2.8](https://pypi.org/project/apache-airflow) + +To use the OpenLineage Airflow integration, you'll need a running [Airflow instance](https://airflow.apache.org/docs/apache-airflow/stable/start.html). You'll also need an OpenLineage-compatible [backend](https://github.com/OpenLineage/OpenLineage#scope). + +#### INSTALLATION + +Before installing check [supported Airflow versions](older.md#supported-airflow-versions). + +To download and install the latest `openlineage-airflow` library run: + +``` +openlineage-airflow +``` + +You can also add `openlineage-airflow` to your `requirements.txt` for Airflow. + +To install from source, run: + +```bash +$ python3 setup.py install +``` + +#### CONFIGURATION + +Next, specify where you want OpenLineage to send events. + +We recommend configuring the client with an `openlineage.yml` file that tells the client how to connect to an OpenLineage backend. +[See how to do it.](../../client/python.md#configuration) + +The simplest option, limited to HTTP client, is to use the environment variables. +For example, to send OpenLineage events to a local instance of [Marquez](https://github.com/MarquezProject/marquez), use: + +```bash +OPENLINEAGE_URL=http://localhost:5000 +OPENLINEAGE_ENDPOINT=api/v1/lineage # This is the default value when this variable is not set, it can be omitted in this example +OPENLINEAGE_API_KEY=secret_token # This is only required if authentication headers are required, it can be omitted in this example +``` + +To set up an additional configuration, or to send events to targets other than an HTTP server (e.g., a Kafka topic), [configure a client.](../../client/python.md#configuration) + +> **_NOTE:_** If you use a version of Airflow older than 2.3.0, [additional configuration is required](older.md#airflow-21---22). + +##### Environment Variables + +The following environment variables are available specifically for the Airflow integration, in addition to [Python client variables](../../client/python.md#environment-variables). + +| Name | Description | Example | +|-----------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------| +| OPENLINEAGE_AIRFLOW_DISABLE_SOURCE_CODE | Set to `False` if you want source code of callables provided in PythonOperator or BashOperator `NOT` to be included in OpenLineage events. | False | +| OPENLINEAGE_EXTRACTORS | The optional list of extractors class (as semi-colon separated string) in case you need to use custom extractors. | full.path.to.ExtractorClass;full.path.to.AnotherExtractorClass | +| OPENLINEAGE_NAMESPACE | The optional namespace that the lineage data belongs to. If not specified, defaults to `default`. | my_namespace | +| OPENLINEAGE_AIRFLOW_LOGGING | Logging level of OpenLineage client in Airflow (the OPENLINEAGE_CLIENT_LOGGING variable from python client has no effect here). | DEBUG | + +For backwards compatibility, `openlineage-airflow` also supports configuration via +`MARQUEZ_NAMESPACE`, `MARQUEZ_URL` and `MARQUEZ_API_KEY` variables, instead of standard +`OPENLINEAGE_NAMESPACE`, `OPENLINEAGE_URL` and `OPENLINEAGE_API_KEY`. +Variables with different prefix should not be mixed together. + + +#### USAGE + +When enabled, the integration will: + +* On TaskInstance **start**, collect metadata for each task. +* Collect task input / output metadata (source, schema, etc.). +* Collect task run-level metadata (execution time, state, parameters, etc.) +* On TaskInstance **complete**, also mark the task as complete in Marquez. diff --git a/versioned_docs/version-1.24.1/integrations/dbt.md b/versioned_docs/version-1.24.1/integrations/dbt.md new file mode 100644 index 0000000..837a38d --- /dev/null +++ b/versioned_docs/version-1.24.1/integrations/dbt.md @@ -0,0 +1,61 @@ +--- +sidebar_position: 5 +title: dbt +--- + +dbt (data build tool) is a powerful transformation engine. It operates on data already within a warehouse, making it easy for data engineers to build complex pipelines from the comfort of their laptops. While it doesn’t perform extraction and loading of data, it’s extremely powerful at transformations. + +To learn more about dbt, visit the [documentation site](https://docs.getdbt.com) or run through the [getting started tutorial](https://docs.getdbt.com/tutorial/setting-up). + +## How does dbt work with OpenLineage? + +Fortunately, dbt already collects a lot of the data required to create and emit OpenLineage events. When it runs, it creates a `target/manifest.json` file containing information about jobs and the datasets they affect, and a `target/run_results.json` file containing information about the run-cycle. These files can be used to trace lineage and job performance. In addition, by using the `create catalog` command, a user can instruct dbt to create a `target/catalog.json` file containing information about dataset schemas. + +These files contain everything needed to trace lineage. However, the `target/manifest.json` and `target/run_results.json` files are only populated with comprehensive metadata after completion of a run-cycle. + +This integration is implemented as a wrapper script, `dbt-ol`, that calls `dbt` and, after the run has completed, collects information from the three json files and calls the OpenLineage API accordingly. For most users, enabling OpenLineage metadata collection can be accomplished by simply substituting `dbt-ol` for `dbt` when performing a run. + +## Preparing a dbt project for OpenLineage + +First, we need to install the integration: + +```bash +pip3 install openlineage-dbt +``` + +Next, we specify where we want dbt to send OpenLineage events by setting the `OPENLINEAGE_URL` environment variable. For example, to send OpenLineage events to a local instance of Marquez, use: + +```bash +OPENLINEAGE_URL=http://localhost:5000 +``` + +Finally, we can optionally specify a namespace where the lineage events will be stored. For example, to use the namespace "dev": + +```bash +OPENLINEAGE_NAMESPACE=dev +``` + +## Running dbt with OpenLineage + +To run your dbt project with OpenLineage collection, simply replace `dbt` with `dbt-ol`: + +```bash +dbt-ol run +``` + +The `dbt-ol` wrapper supports all of the standard `dbt` subcommands, and is safe to use as a substitutuon (i.e., in an alias). Once the run has completed, you will see output containing the number of events sent via the OpenLineage API: + +```bash +Completed successfully + +Done. PASS=2 WARN=0 ERROR=0 SKIP=0 TOTAL=2 +Emitted 4 openlineage events +``` + +## Where can I learn more? + +* Watch [a short demonstration of the integration in action](https://youtu.be/7caHXLDKacg) + +## Feedback + +What did you think of this guide? You can reach out to us on [slack](http://bit.ly/OpenLineageSlack) and leave us feedback! \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/integrations/flink.md b/versioned_docs/version-1.24.1/integrations/flink.md new file mode 100644 index 0000000..871b94e --- /dev/null +++ b/versioned_docs/version-1.24.1/integrations/flink.md @@ -0,0 +1,138 @@ +--- +sidebar_position: 4 +title: Apache Flink +--- + + +**Apache Flink** is one of the most popular stream processing frameworks. Apache Flink jobs run on clusters, +which are composed of two types of nodes: `TaskManagers` and `JobManagers`. While clusters typically consists of +multiple `TaskManagers`, only reason to run multiple JobManagers is high availability. The jobs are _submitted_ +to `JobManager` by `JobClient`, that compiles user application into dataflow graph which is understandable by `JobManager`. +`JobManager` then coordinates job execution: it splits the parallel units of a job +to `TaskManagers`, manages heartbeats, triggers checkpoints, reacts to failures and much more. + +Apache Flink has multiple deployment modes - Session Mode, Application Mode and Per-Job mode. The most popular +are Session Mode and Application Mode. Session Mode consists of a `JobManager` managing multiple jobs sharing single +Flink cluster. In this mode, `JobClient` is executed on a machine that submits the job to the cluster. + +Application Mode is used where cluster is utilized for a single job. In this mode, `JobClient`, where the main method runs, +is executed on the `JobManager`. + +Flink jobs read data from `Sources` and write data to `Sinks`. In contrast to systems like Apache Spark, Flink jobs can write +data to multiple places - they can have multiple `Sinks`. + +## Getting lineage from Flink + +OpenLineage utilizes Flink's `JobListener` interface. This interface is used by Flink to notify user of job submission, +successful finish of job, or job failure. Implementations of this interface are executed on `JobClient`. + +When OpenLineage listener receives information that job was submitted, it extracts `Transformations` from job's +`ExecutionEnvironment`. The `Transformations` represent logical operations in the dataflow graph; they are composed +of both Flink's built-in operators, but also user-provided `Sources`, `Sinks` and functions. To get the lineage, +OpenLineage integration processes dataflow graph. Currently, OpenLineage is interested only in information contained +in `Sources` and `Sinks`, as they are the places where Flink interacts with external systems. + +After job submission, OpenLineage integration starts actively listening to checkpoints - this gives insight into +whether the job runs properly. + +## Limitations + +Currently, OpenLineage's Flink integration is limited to getting information from jobs running in Application Mode. + +OpenLineage integration extracts lineage only from following `Sources` and `Sinks`: + +
+ + + + + + + + + + + + + + + + + + +
SourcesSinks
KafkaSourceKafkaSink (1)
FlinkKafkaConsumerFlinkKafkaProducer
IcebergFlinkSourceIcebergFlinkSink
+ +We expect this list to grow as we add support for more connectors. + +(1) KafkaSink supports sinks that write to a single topic as well as multi topic sinks. The +limitation for multi topic sink is that: topics need to have the same schema and implementation +of `KafkaRecordSerializationSchema` must extend `KafkaTopicsDescriptor`. +Methods `isFixedTopics` and `getFixedTopics` from `KafkaTopicsDescriptor` are used to extract multiple topics +from a sink. + +## Usage + +In your job, you need to set up `OpenLineageFlinkJobListener`. + +For example: +```java +JobListener listener = OpenLineageFlinkJobListener.builder() + .executionEnvironment(streamExecutionEnvironment) + .build(); +streamExecutionEnvironment.registerJobListener(listener); +``` + +Also, OpenLineage needs certain parameters to be set in `flink-conf.yaml`: + + + + + + + + + + + + + + + + +
Configuration KeyDescriptionExpected ValueDefault
execution.attachedThis setting needs to be true if OpenLineage is to detect job start and failuretruefalse
+ +OpenLineage jar needs to be present on `JobManager`. + +When the `JobListener` is configured, you need to point the OpenLineage integration where the events should end up. +If you're using `Marquez`, simplest way to do that is to set up `OPENLINEAGE_URL` environment +variable to `Marquez` URL. More advanced settings are [in the client documentation.](../client/java/java.md). + +## Configuring Openlineage connector + +Flink Openlineage connector utilizes standard [Java client for Openlineage](https://github.com/OpenLineage/OpenLineage/tree/main/client/java) +and allows all the configuration features present there to be used. The configuration can be passed with: + * `openlineage.yml` file with a environment property `OPENLINEAGE_CONFIG` being set and pointing to configuration file. File structure and allowed options are described [here](https://github.com/OpenLineage/OpenLineage/tree/main/client/java#configuration). + * Standard Flink configuration with the parameters defined below. + +### Flink Configuration parameters + +The following parameters can be specified: + +| Parameter | Definition | Example | +|-------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------| +| openlineage.transport.type | The transport type used for event emit, default type is `console` | http | +| openlineage.facets.disabled | List of facets to disable, enclosed in `[]` (required from 0.21.x) and separated by `;`, default is `[spark_unknown;spark.logicalPlan;]` (currently must contain `;`) | \[some_facet1;some_facet1\] | +| openlineage.job.owners.\ | Specifies ownership of the job. Multiple entries with different types are allowed. Config key name and value are used to create job ownership type and name (available since 1.13). | openlineage.job.owners.team="Some Team" | + +## Transports + +import Transports from '@site/docs/client/java/partials/java_transport.md'; + + + +## Circuit Breakers + +import CircuitBreakers from '@site/docs/client/java/partials/java_circuit_breaker.md'; + + + diff --git a/versioned_docs/version-1.24.1/integrations/great-expectations.md b/versioned_docs/version-1.24.1/integrations/great-expectations.md new file mode 100644 index 0000000..422fc79 --- /dev/null +++ b/versioned_docs/version-1.24.1/integrations/great-expectations.md @@ -0,0 +1,86 @@ +--- +sidebar_position: 6 +title: Great Expectations +--- + +Great Expectations is a robust data quality tool. It runs suites of checks, called expectations, over a defined dataset. This dataset can be a table in a database, or a Spark or Pandas dataframe. Expectations are run by checkpoints, which are configuration files that describe not just the expectations to use, but also any batching, runtime configurations, and, importantly, the action list of actions run after the expectation suite completes. + +To learn more about Great Expectations, visit their [documentation site](https://docs.greatexpectations.io/docs/). + +## How does Great Expectations work with OpenLineage? + +Great Expecations integrates with OpenLineage through the action list in a checkpoint. An OpenLineage action can be specified, which is triggered when all expectations are run. Data from the checkpoint is sent to OpenLineage, which can then be viewed in Marquez or Datakin. + +## Preparing a Great Expectations project for OpenLineage + +First, we specify where we want Great Expectations to send OpenLineage events by setting the `OPENLINEAGE_URL` environment variable. For example, to send OpenLineage events to a local instance of Marquez, use: + +```bash +OPENLINEAGE_URL=http://localhost:5000 +``` + +If data is being sent to an endpoint with an API key, then that key must be supplied as well: + +```bash +OPENLINEAGE_API_KEY=123456789 +``` + +We can optionally specify a namespace where the lineage events will be stored. For example, to use the namespace "dev": + +```bash +OPENLINEAGE_NAMESPACE=dev +``` + +With these environment variables set, we can add the OpenLineage action to the action list of the Great Expecations checkpoint. +Note: this must be done for *each* checkpoint. +Note: when using the `GreatExpectationsOperator>=0.2.0` in Airflow, there is a boolean parameter, defaulting to `True`, that will automatically create this action list item when it detects the OpenLineage environment specified in the previous step. + + +In a python checkpoint, this looks like: + +```python +action_list = [ + { + "name": "store_validation_result", + "action": {"class_name": "StoreValidationResultAction"}, + }, + { + "name": "store_evaluation_params", + "action": {"class_name": "StoreEvaluationParametersAction"}, + }, + { + "name": "update_data_docs", + "action": {"class_name": "UpdateDataDocsAction", "site_names": []}, + }, + { + "name": "open_lineage", + "action": { + "class_name": "OpenLineageValidationAction", + "module_name": "openlineage.common.provider.great_expectations", + "openlineage_host": os.getenv("OPENLINEAGE_URL"), + "openlineage_apiKey": os.getenv("OPENLINEAGE_API_KEY"), + "openlineage_namespace": oss.getenv("OPENLINEAGE_NAMESPACE"), + "job_name": "openlineage_job", + }, + } +] +``` + +And in yaml: + +```yaml +name: openlineage + action: + class_name: OpenLineageValidationAction + module_name: openlineage.common.provider.great_expectations + openlineage_host: + openlineage_apiKey: + openlineage_namespace: # Replace with your job namespace; we recommend a meaningful namespace like `dev` or `prod`, etc. + job_name: validate_my_dataset +``` + +Then run your Great Expecations checkpoint with the CLI or your integration of choice. + +## Feedback + +What did you think of this guide? You can reach out to us on [slack](http://bit.ly/OpenLineageSlack) and leave us feedback! diff --git a/versioned_docs/version-1.24.1/integrations/integrate-datasources.svg b/versioned_docs/version-1.24.1/integrations/integrate-datasources.svg new file mode 100644 index 0000000..9cc12a5 --- /dev/null +++ b/versioned_docs/version-1.24.1/integrations/integrate-datasources.svg @@ -0,0 +1,127 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/versioned_docs/version-1.24.1/integrations/integrate-pipelines.svg b/versioned_docs/version-1.24.1/integrations/integrate-pipelines.svg new file mode 100644 index 0000000..8b75824 --- /dev/null +++ b/versioned_docs/version-1.24.1/integrations/integrate-pipelines.svg @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/versioned_docs/version-1.24.1/integrations/spark/_category_.json b/versioned_docs/version-1.24.1/integrations/spark/_category_.json new file mode 100644 index 0000000..07472be --- /dev/null +++ b/versioned_docs/version-1.24.1/integrations/spark/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Apache Spark", + "position": 3 +} diff --git a/versioned_docs/version-1.24.1/integrations/spark/configuration/_category_.json b/versioned_docs/version-1.24.1/integrations/spark/configuration/_category_.json new file mode 100644 index 0000000..918fb7c --- /dev/null +++ b/versioned_docs/version-1.24.1/integrations/spark/configuration/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Configuration", + "position": 3 +} diff --git a/versioned_docs/version-1.24.1/integrations/spark/configuration/airflow.md b/versioned_docs/version-1.24.1/integrations/spark/configuration/airflow.md new file mode 100644 index 0000000..8adba52 --- /dev/null +++ b/versioned_docs/version-1.24.1/integrations/spark/configuration/airflow.md @@ -0,0 +1,33 @@ +--- +sidebar_position: 4 +title: Scheduling from Airflow +--- + + +The same parameters passed to `spark-submit` can be supplied from Airflow and other schedulers. If +using the [openlineage-airflow](../../airflow/airflow.md) integration, each task in the DAG has its own Run id +which can be connected to the Spark job run via the `spark.openlineage.parentRunId` parameter. For example, +here is an example of a `DataProcPySparkOperator` that submits a Pyspark application on Dataproc: + +```python +t1 = DataProcPySparkOperator( + task_id=job_name, + gcp_conn_id='google_cloud_default', + project_id='project_id', + cluster_name='cluster-name', + region='us-west1', + main='gs://bucket/your-prog.py', + job_name=job_name, + dataproc_pyspark_properties={ + "spark.extraListeners": "io.openlineage.spark.agent.OpenLineageSparkListener", + "spark.jars.packages": "io.openlineage:openlineage-spark:1.0.0+", + "spark.openlineage.transport.url": openlineage_url, + "spark.openlineage.transport.auth.apiKey": api_key, + "spark.openlineage.transport.auth.type": api_key, + "spark.openlineage.namespace": openlineage_spark_namespace, + "spark.openlineage.parentJobNamespace": openlineage_airflow_namespace, + "spark.openlineage.parentJobName": job_name, + "spark.openlineage.parentRunId": "{{ lineage_parent_id(run_id, task, task_instance) }} + }, + dag=dag) +``` diff --git a/versioned_docs/version-1.24.1/integrations/spark/configuration/circuit_breaker.md b/versioned_docs/version-1.24.1/integrations/spark/configuration/circuit_breaker.md new file mode 100644 index 0000000..1f723a5 --- /dev/null +++ b/versioned_docs/version-1.24.1/integrations/spark/configuration/circuit_breaker.md @@ -0,0 +1,8 @@ +--- +sidebar_position: 3 +title: Circuit Breaker +--- + +import CircuitBreakers from '@site/docs/client/java/partials/java_circuit_breaker.md'; + + diff --git a/versioned_docs/version-1.24.1/integrations/spark/configuration/spark_conf.md b/versioned_docs/version-1.24.1/integrations/spark/configuration/spark_conf.md new file mode 100644 index 0000000..fc57979 --- /dev/null +++ b/versioned_docs/version-1.24.1/integrations/spark/configuration/spark_conf.md @@ -0,0 +1,26 @@ +--- +sidebar_position: 2 +title: Spark Config Parameters +--- + + +The following parameters can be specified: + +| Parameter | Definition | Example | +|-------------------------------------------------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------| +| spark.openlineage.transport.type | The transport type used for event emit, default type is `console` | http | +| spark.openlineage.namespace | The default namespace to be applied for any jobs submitted | MyNamespace | +| spark.openlineage.parentJobNamespace | The job namespace to be used for the parent job facet | ParentJobNamespace | +| spark.openlineage.parentJobName | The job name to be used for the parent job facet | ParentJobName | +| spark.openlineage.parentRunId | The RunId of the parent job that initiated this Spark job | xxxx-xxxx-xxxx-xxxx | +| spark.openlineage.appName | Custom value overwriting Spark app name in events | AppName | +| spark.openlineage.facets.disabled | **Deprecated: Use the property `spark.openlineage.facets.disabled` instead**. List of facets to filter out from the events, enclosed in `[]` (required from 0.21.x) and separated by `;`, default is `[]` | \[columnLineage;\] | +| spark.openlineage.facets.<facet name>.disabled | If set to true, it disables the specific facet. The default value is `false`. The name of the facet can be hierarchical. The facets disabled by default are `debug`, `spark.logicalPlan` and `spark_unknown`. You have to switch the flag to `false` to enable them. | true | +| spark.openlineage.facets.variables | List of environment variables (System.getenv() | \[columnLineage;\] | +| spark.openlineage.capturedProperties | comma separated list of properties to be captured in spark properties facet (default `spark.master`, `spark.app.name`) | "spark.example1,spark.example2" | +| spark.openlineage.dataset.removePath.pattern | Java regular expression that removes `?` named group from dataset path. Can be used to last path subdirectories from paths like `s3://my-whatever-path/year=2023/month=04` | `(.*)(?\/.*\/.*)` | +| spark.openlineage.jobName.appendDatasetName | Decides whether output dataset name should be appended to job name. By default `true`. | false | +| spark.openlineage.jobName.replaceDotWithUnderscore | Replaces dots in job name with underscore. Can be used to mimic legacy behaviour on Databricks platform. By default `false`. | false | +| spark.openlineage.debugFacet | Determines whether debug facet shall be generated and included within the event. Set `enabled` to turn it on. By default, facet is disabled. | enabled | +| spark.openlineage.job.owners.\ | Specifies ownership of the job. Multiple entries with different types are allowed. Config key name and value are used to create job ownership type and name (available since 1.13). | spark.openlineage.job.owners.team="Some Team" | +| spark.openlineage.columnLineage.datasetLineageEnabled | Makes the dataset dependencies to be included in their own property `dataset` in the column lineage pattern. If this flag is set to `false`, then the dataset dependencies are merged into `fields` property. The default value is `false`. **It is recommended to set it to `true`** | true | diff --git a/versioned_docs/version-1.24.1/integrations/spark/configuration/transport.md b/versioned_docs/version-1.24.1/integrations/spark/configuration/transport.md new file mode 100644 index 0000000..49c0369 --- /dev/null +++ b/versioned_docs/version-1.24.1/integrations/spark/configuration/transport.md @@ -0,0 +1,8 @@ +--- +sidebar_position: 2 +title: Transport +--- + +import Transports from '@site/docs/client/java/partials/java_transport.md'; + + \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/integrations/spark/configuration/usage.md b/versioned_docs/version-1.24.1/integrations/spark/configuration/usage.md new file mode 100644 index 0000000..f4f1d79 --- /dev/null +++ b/versioned_docs/version-1.24.1/integrations/spark/configuration/usage.md @@ -0,0 +1,127 @@ +--- +sidebar_position: 1 +title: Usage +--- + + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +Configuring the OpenLineage Spark integration is straightforward. It uses built-in Spark configuration mechanisms. + +Your options are: + +1. [Setting the properties directly in your application](#setting-the-properties-directly-in-your-application). +2. [Using `--conf` options with the CLI](#using---conf-options-with-the-cli). +3. [Adding properties to the `spark-defaults.conf` file in the `${SPARK_HOME}/conf` directory](#adding-properties-to-the-spark-defaultsconf-file-in-the-spark_homeconf-directory). + +#### Setting the properties directly in your application + +The below example demonstrates how to set the properties directly in your application when +constructing +a `SparkSession`. + +:::warning +The setting `config("spark.extraListeners", "io.openlineage.spark.agent.OpenLineageSparkListener")` is +**extremely important**. Without it, the OpenLineage Spark integration will not be invoked, rendering +the integration ineffective. +::: + + + + +```scala +import org.apache.spark.sql.SparkSession + +object OpenLineageExample extends App { + val spark = SparkSession.builder() + .appName("OpenLineageExample") + // This line is EXTREMELY important + .config("spark.extraListeners", "io.openlineage.spark.agent.OpenLineageSparkListener") + .config("spark.openlineage.transport.type", "http") + .config("spark.openlineage.transport.url", "http://localhost:5000") + .config("spark.openlineage.namespace", "spark_namespace") + .config("spark.openlineage.parentJobNamespace", "airflow_namespace") + .config("spark.openlineage.parentJobName", "airflow_dag.airflow_task") + .config("spark.openlineage.parentRunId", "xxxx-xxxx-xxxx-xxxx") + .getOrCreate() + + // ... your code + + spark.stop() +} +``` + + + + +```python +from pyspark.sql import SparkSession + +spark = SparkSession.builder + .appName("OpenLineageExample") + .config("spark.extraListeners", "io.openlineage.spark.agent.OpenLineageSparkListener") + .config("spark.openlineage.transport.type", "http") + .config("spark.openlineage.transport.url", "http://localhost:5000") + .config("spark.openlineage.namespace", "spark_namespace") + .config("spark.openlineage.parentJobNamespace", "airflow_namespace") + .config("spark.openlineage.parentJobName", "airflow_dag.airflow_task") + .config("spark.openlineage.parentRunId", "xxxx-xxxx-xxxx-xxxx") + .getOrCreate() + +# ... your code + +spark.stop() +``` + + + + +#### Using `--conf` options with the CLI + +The below example demonstrates how to use the `--conf` option with `spark-submit`. + +```bash +spark-submit \ + --conf "spark.extraListeners=io.openlineage.spark.agent.OpenLineageSparkListener" \ + --conf "spark.openlineage.transport.type=http" \ + --conf "spark.openlineage.transport.url=http://localhost:5000" \ + --conf "spark.openlineage.namespace=spark_namespace" \ + --conf "spark.openlineage.parentJobNamespace=airflow_namespace" \ + --conf "spark.openlineage.parentJobName=airflow_dag.airflow_task" \ + --conf "spark.openlineage.parentRunId=xxxx-xxxx-xxxx-xxxx" \ + # ... other options +``` + +#### Adding properties to the `spark-defaults.conf` file in the `${SPARK_HOME}/conf` directory + +:::warning +You may need to create this file if it does not exist. If it does exist, **we strongly suggest that +you back it up before making any changes**, particularly if you are not the only user of the Spark +installation. A misconfiguration here can have devastating effects on the operation of your Spark +installation, particularly in a shared environment. +::: + +The below example demonstrates how to add properties to the `spark-defaults.conf` file. + +```properties +spark.extraListeners=io.openlineage.spark.agent.OpenLineageSparkListener +spark.openlineage.transport.type=http +spark.openlineage.transport.url=http://localhost:5000 +spark.openlineage.namespace=MyNamespace +``` + +:::info +The `spark.extraListeners` configuration parameter is **non-additive**. This means that if you set +`spark.extraListeners` via the CLI or via `SparkSession#config`, it will **replace** the value +in `spark-defaults.conf`. This is important to remember if you are using `spark-defaults.conf` to +set a default value for `spark.extraListeners` and then want to override it for a specific job. +::: + +:::info +When it comes to configuration parameters like `spark.openlineage.namespace`, a default value can +be supplied in the `spark-defaults.conf` file. This default value can be overridden by the +application at runtime, via the previously detailed methods. However, it is **strongly** recommended +that more dynamic or quickly changing parameters like `spark.openlineage.parentRunId` or +`spark.openlineage.parentJobName` be set at runtime via the CLI or `SparkSession#config` methods. +::: diff --git a/versioned_docs/version-1.24.1/integrations/spark/extending.md b/versioned_docs/version-1.24.1/integrations/spark/extending.md new file mode 100644 index 0000000..4eb04f9 --- /dev/null +++ b/versioned_docs/version-1.24.1/integrations/spark/extending.md @@ -0,0 +1,232 @@ +--- +sidebar_position: 9 +title: Extending +--- + +The Spark library is intended to support extension via custom implementations of a handful +of interfaces. Nearly every extension interface extends or mimics Scala's `PartialFunction`. The +`isDefinedAt(Object x)` method determines whether a given input is a valid input to the function. +A default implementation of `isDefinedAt(Object x)` is provided, which checks the generic type +arguments of the concrete class, if concrete type arguments are given, and determines if the input +argument matches the generic type. For example, the following class is automatically defined for an +input argument of type `MyDataset`. + +``` +class MyDatasetDetector extends QueryPlanVisitor { +} +``` + +## API +The following APIs are still evolving and may change over time based on user feedback. + +### [`OpenLineageEventHandlerFactory`](https://github.com/OpenLineage/OpenLineage/blob/main/integration/spark/shared/src/main/java/io/openlineage/spark/api/OpenLineageEventHandlerFactory.java) +This interface defines the main entrypoint to the extension codebase. Custom implementations +are registered by following Java's [`ServiceLoader` conventions](https://docs.oracle.com/javase/8/docs/api/java/util/ServiceLoader.html). +A file called `io.openlineage.spark.api.OpenLineageEventHandlerFactory` must exist in the +application or jar's `META-INF/service` directory. Each line of that file must be the fully +qualified class name of a concrete implementation of `OpenLineageEventHandlerFactory`. More than one +implementation can be present in a single file. This might be useful to separate extensions that +are targeted toward different environments - e.g., one factory may contain Azure-specific extensions, +while another factory may contain GCP extensions. + +The `OpenLineageEventHandlerFactory` interface makes heavy use of default methods. Implementations +may override any or all of the following methods +```java +/** + * Return a collection of QueryPlanVisitors that can generate InputDatasets from a LogicalPlan node + */ +Collection>> createInputDatasetQueryPlanVisitors(OpenLineageContext context); + +/** + * Return a collection of QueryPlanVisitors that can generate OutputDatasets from a LogicalPlan node + */ +Collection>> createOutputDatasetQueryPlanVisitors(OpenLineageContext context); + +/** + * Return a collection of PartialFunctions that can generate InputDatasets from one of the + * pre-defined Spark types accessible from SparkListenerEvents (see below) + */ +Collection>> createInputDatasetBuilder(OpenLineageContext context); + +/** + * Return a collection of PartialFunctions that can generate OutputDatasets from one of the + * pre-defined Spark types accessible from SparkListenerEvents (see below) + */ +Collection>> createOutputDatasetBuilder(OpenLineageContext context); + +/** + * Return a collection of CustomFacetBuilders that can generate InputDatasetFacets from one of the + * pre-defined Spark types accessible from SparkListenerEvents (see below) + */ +Collection> createInputDatasetFacetBuilders(OpenLineageContext context); + +/** + * Return a collection of CustomFacetBuilders that can generate OutputDatasetFacets from one of the + * pre-defined Spark types accessible from SparkListenerEvents (see below) + */ +Collection>createOutputDatasetFacetBuilders(OpenLineageContext context); + +/** + * Return a collection of CustomFacetBuilders that can generate DatasetFacets from one of the + * pre-defined Spark types accessible from SparkListenerEvents (see below) + */ +Collection> createDatasetFacetBuilders(OpenLineageContext context); + +/** + * Return a collection of CustomFacetBuilders that can generate RunFacets from one of the + * pre-defined Spark types accessible from SparkListenerEvents (see below) + */ +Collection> createRunFacetBuilders(OpenLineageContext context); + +/** + * Return a collection of CustomFacetBuilders that can generate JobFacets from one of the + * pre-defined Spark types accessible from SparkListenerEvents (see below) + */ +Collection> createJobFacetBuilders(OpenLineageContext context); +``` + +See the [`OpenLineageEventHandlerFactory` javadocs](https://github.com/OpenLineage/OpenLineage/blob/main/integration/spark/shared/src/main/java/io/openlineage/spark/api/OpenLineageEventHandlerFactory.java) +for specifics on each method. + + +### [`QueryPlanVisitor`](https://github.com/OpenLineage/OpenLineage/blob/main/integration/spark/shared/src/main/java/io/openlineage/spark/api/QueryPlanVisitor.java) +QueryPlanVisitors evaluate nodes of a Spark `LogicalPlan` and attempt to generate `InputDataset`s or +`OutputDataset`s from the information found in the `LogicalPlan` nodes. This is the most common +abstraction present in the OpenLineage Spark library, and many examples can be found in the +`io.openlineage.spark.agent.lifecycle.plan` package - examples include the +[`BigQueryNodeVisitor`](https://github.com/OpenLineage/OpenLineage/blob/main/integration/spark/shared/src/main/java/io/openlineage/spark/agent/lifecycle/plan/BigQueryNodeVisitor.java), +the [`KafkaRelationVisitor`](https://github.com/OpenLineage/OpenLineage/blob/main/integration/spark/shared/src/main/java/io/openlineage/spark/agent/lifecycle/plan/KafkaRelationVisitor.java) +and the [`InsertIntoHiveTableVisitor`](https://github.com/OpenLineage/OpenLineage/blob/main/integration/spark/shared/src/main/java/io/openlineage/spark/agent/lifecycle/plan/InsertIntoHiveTableVisitor.java). + +`QueryPlanVisitor`s implement Scala's `PartialFunction` interface and are tested against every node +of a Spark query's optimized `LogicalPlan`. Each invocation will expect either an `InputDataset` +or an `OutputDataset`. If a node can be either an `InputDataset` or an `OutputDataset`, the +constructor should accept a `DatasetFactory` so that the correct dataset type is generated at +runtime. + +`QueryPlanVisitor`s can attach facets to the Datasets created, e.g., `SchemaDatasetFacet` and +`DatasourceDatasetFacet` are typically attached to the dataset when it is created. Custom facets +can also be attached, though `CustomFacetBuilder`s _may_ override facets attached directly to the +dataset. + +Spark job's naming logic appends output dataset's identifier as job suffix. In order to provide a job suffix, a `QueryPlanVisitor` +needs to implement [`JobNameSuffixProvider`](https://github.com/OpenLineage/OpenLineage/blob/main/integration/spark/shared/src/main/java/io/openlineage/spark/api/JobNameSuffixProvider.java) +interface. Otherwise no suffix will be appended. Job suffix should contain human-readable name +of the dataset so that consumers of OpenLineage events can correlate events with particular +Spark actions within their code. The logic to extract dataset name should not depend on the existence +of the dataset as in case of creating new dataset it may not exist at the moment of assigning job suffix. +In most cases, the suffix should contain spark catalog, database and table separated by `.` which shall be +extracted from LogicalPlan nodes properties. + +### [`InputDatasetBuilder`](https://github.com/OpenLineage/OpenLineage/blob/main/integration/spark/shared/src/main/java/io/openlineage/spark/api/AbstractInputDatasetBuilder.java) and [`OutputDatasetBuilder`](https://github.com/OpenLineage/OpenLineage/blob/main/integration/spark/shared/src/main/common/java/io/openlineage/spark/api/AbstractOutputDatasetBuilder.java) +Similar to the `QueryPlanVisitor`s, `InputDatasetBuilder`s and `OutputDatasetBuilder`s are +`PartialFunction`s defined for a specific input (see below for the list of Spark listener events and +scheduler objects that can be passed to a builder) that can generate either an `InputDataset` or an +`OutputDataset`. Though not strictly necessary, the abstract base classes +[`AbstractInputDatasetBuilder`](https://github.com/OpenLineage/OpenLineage/blob/main/integration/spark/shared/src/main/java/io/openlineage/spark/api/AbstractInputDatasetBuilder.java) +and [`AbstractOutputDatasetBuilder`](https://github.com/OpenLineage/OpenLineage/blob/main/integration/spark/shared/src/main/java/io/openlineage/spark/api/AbstractOutputDatasetBuilder.java) +are available for builders to extend. + +Spark job's naming logic appends output dataset's identifier as job suffix. +In order to provide a job suffix, a `OutputDatasetBuilder` needs to implement [`JobNameSuffixProvider`](https://github.com/OpenLineage/OpenLineage/blob/main/integration/spark/shared/src/main/java/io/openlineage/spark/api/JobNameSuffixProvider.java) +interface. Otherwise no suffix will be appended. Job suffix should contain human-readable name +of the dataset so that consumers of OpenLineage events can correlate events with particular +Spark actions within their code. The logic to extract dataset name should not depend on the existence +of the dataset as in case of creating new dataset it may not exist at the moment of assigning job suffix. +In most cases, the suffix should contain spark catalog, database and table separated by `.` which shall be +extracted from LogicalPlan nodes properties. + +### [`CustomFacetBuilder`](https://github.com/OpenLineage/OpenLineage/blob/main/integration/spark/shared/src/main/java/io/openlineage/spark/api/CustomFacetBuilder.java) +`CustomFacetBuilders` evaluate Spark event types and scheduler objects (see below) to construct custom +facets. `CustomFacetBuilders` are used to create `InputDatsetFacet`s, `OutputDatsetFacet`s, +`DatsetFacet`s, `RunFacet`s, and `JobFacet`s. A few examples can be found in the +[`io.openlineage.spark.agent.facets.builder`](https://github.com/OpenLineage/OpenLineage/blob/main/integration/spark/shared/src/main/java/io/openlineage/spark/agent/facets/builder) +package, including the [`ErrorFacetBuilder`](https://github.com/OpenLineage/OpenLineage/blob/main/integration/spark/shared/src/main/java/io/openlineage/spark/agent/facets/builder/ErrorFacetBuilder.java) +and the [`LogicalPlanRunFacetBuilder`](https://github.com/OpenLineage/OpenLineage/blob/main/integration/spark/shared/src/main/java/io/openlineage/spark/agent/facets/builder/LogicalPlanRunFacetBuilder.java). +`CustomFacetBuilder`s are not `PartialFunction` implementations, but do define the `isDefinedAt(Object)` +method to determine whether a given input is valid for the function. They implement the `BiConsumer` +interface, accepting the valid input argument, and a `BiConsumer` consumer, which +accepts the name and value of any custom facet that should be attached to the OpenLineage run. +There is no limit to the number of facets that can be reported by a given `CustomFacetBuilder`. +Facet names that conflict will overwrite previously reported facets if they are reported for the +same Spark event. +Though not strictly necessary, the following abstract base classes are available for extension: +* [`AbstractJobFacetBuilder`](https://github.com/OpenLineage/OpenLineage/blob/main/integration/spark/shared/src/main/java/io/openlineage/spark/api/AbstractJobFacetBuilder.java) +* [`AbstractRunFacetBuilder`](https://github.com/OpenLineage/OpenLineage/blob/main/integration/spark/shared/src/main/java/io/openlineage/spark/api/AbstractRunFacetBuilder.java) +* [`AbstractInputDatasetFacetBuilder`](https://github.com/OpenLineage/OpenLineage/blob/main/integration/spark/shared/src/main/java/io/openlineage/spark/api/AbstractInputDatasetFacetBuilder.java) +* [`AbstractOutputDatasetFacetBuilder`](https://github.com/OpenLineage/OpenLineage/blob/main/integration/spark/shared/src/main/java/io/openlineage/spark/api/AbstractOutputDatasetFacetBuilder.java) +* [`AbstractDatasetFacetBuilder`](https://github.com/OpenLineage/OpenLineage/blob/main/integration/spark/shared/src/main/java/io/openlineage/spark/api/AbstractDatasetFacetBuilder.java) + +Input/Output/Dataset facets returned are attached to _any_ Input/Output Dataset found for a given +Spark event. Typically, a Spark job only has one `OutputDataset`, so any `OutputDatasetFacet` +generated will be attached to that `OutputDataset`. However, Spark jobs often have multiple +`InputDataset`s. Typically, an `InputDataset` is read within a single Spark `Stage`, and any metrics +pertaining to that dataset may be present in the `StageInfo#taskMetrics()` for that `Stage`. +Accumulators pertaining to a dataset should be reported in the task metrics for a stage so that the +`CustomFacetBuilder` can match against the `StageInfo` and retrieve the task metrics for that stage +when generating the `InputDatasetFacet`. Other facet information is often found by analyzing the +`RDD` that reads the raw data for a dataset. `CustomFacetBuilder`s that generate these facets should +be defined for the specific subclass of `RDD` that is used to read the target dataset - e.g., +`HadoopRDD`, `BigQueryRDD`, or `JdbcRDD`. + +### Function Argument Types +`CustomFacetBuilder`s and dataset builders can be defined for the following set of Spark listener +event types and scheduler types: + +* `org.apache.spark.sql.execution.ui.SparkListenerSQLExecutionStart` +* `org.apache.spark.sql.execution.ui.SparkListenerSQLExecutionEnd` +* `org.apache.spark.scheduler.SparkListenerJobStart` +* `org.apache.spark.scheduler.SparkListenerJobEnd` +* `org.apache.spark.rdd.RDD` +* `org.apache.spark.scheduler.Stage` +* `org.apache.spark.scheduler.StageInfo` +* `org.apache.spark.scheduler.ActiveJob` + +Note that `RDD`s are "unwrapped" prior to being evaluated by builders, so there's no need to, e.g., +check a `MapPartitionsRDD`'s dependencies. The `RDD` for each `Stage` can be evaluated when a +`org.apache.spark.scheduler.SparkListenerStageCompleted` event occurs. When a +`org.apache.spark.scheduler.SparkListenerJobEnd` event is encountered, the last `Stage` for the +`ActiveJob` can be evaluated. + +## Spark extensions' built-in lineage extraction + +Spark ecosystem comes with a plenty of pluggable extensions like iceberg, delta or spark-bigquery-connector +to name a few. Extensions modify logical plan of the job and inject its own classes from which lineage shall be +extracted. This is adding extra complexity, as it makes `openlineage-spark` codebase +dependent on the extension packages. The complexity grows more when multiple versions +of the same extension need to be supported. + +### Spark DataSource V2 API Extensions + +Some extensions rely on Spark DataSource V2 API and implement TableProvider, Table, ScanBuilder etc. +that are used within Spark to create `DataSourceV2Relation` instances. + +A logical plan node `DataSourceV2Relation` contains `Table` field with a properties map of type +`Map`. `openlineage-spark` uses this map to extract dataset information for lineage +event from `DataSourceV2Relation`. It is checking for the properties `openlineage.dataset.name` and +`openlineage.dataset.namespace`. If they are present, it uses them to identify a dataset. Please +be aware that namespace and name need to conform to [naming convention](https://github.com/OpenLineage/OpenLineage/blob/main/spec/Naming.md). + +Properties can be also used to pass any dataset facet. For example: +``` +openlineage.dataset.facets.customFacet={"property1": "value1", "property2": "value2"} +``` +will enrich dataset with `customFacet`: +```json +"inputs": [{ + "name": "...", + "namespace": "...", + "facets": { + "customFacet": { + "property1": "value1", + "property2": "value2", + "_producer": "..." + }, + "schema": { } +}] +``` + +The approach can be used for standard facets +from OpenLineage spec as well. `schema` does not need to be passed through the properties as +it is derived within `openlineage-spark` from `DataSourceV2Relation`. Custom facets are automatically +filled with `_producer` field. \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/integrations/spark/installation.md b/versioned_docs/version-1.24.1/integrations/spark/installation.md new file mode 100644 index 0000000..4b252ec --- /dev/null +++ b/versioned_docs/version-1.24.1/integrations/spark/installation.md @@ -0,0 +1,258 @@ +--- +sidebar_position: 2 +title: Installation +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +:::warning + +* Version `1.8.0` and earlier only supported Scala 2.12 variants of Apache Spark. +* Version `1.9.1` and later support both Scala 2.12 and 2.13 variants of Apache Spark. + +The above necessitates a change in the artifact identifier for `io.openlineage:openlineage-spark`. +After version `1.8.0`, the artifact identifier has been updated. For subsequent versions, utilize: +`io.openlineage:openlineage-spark_${SCALA_BINARY_VERSION}:${OPENLINEAGE_SPARK_VERSION}`. +::: + +To integrate OpenLineage Spark with your application, you can: + +- [Bundle the package with your Apache Spark application project](#bundle-the-package-with-your-apache-spark-application-project). +- [Place the JAR in your `${SPARK_HOME}/jars` directory](#place-the-jar-in-your-spark_homejars-directory) +- [Use the `--jars` option with `spark-submit / spark-shell / pyspark`](#use-the---jars-option-with-spark-submit--spark-shell--pyspark) +- [Use the `--packages` option with `spark-submit / spark-shell / pyspark`](#use-the---packages-option-with-spark-submit--spark-shell--pyspark) + +#### Bundle the package with your Apache Spark application project + +:::info +This approach does not demonstrate how to configure the `OpenLineageSparkListener`. +Please refer to the [Configuration](configuration/usage.md) section. +::: + +For Maven, add the following to your `pom.xml`: + + + + +```xml + + io.openlineage + openlineage-spark_${SCALA_BINARY_VERSION} + ${OPENLINEAGE_SPARK_VERSION} + +``` + + + + +```xml + + io.openlineage + openlineage-spark + ${OPENLINEAGE_SPARK_VERSION} + +``` + + + + +For Gradle, add this to your `build.gradle`: + + + + +```groovy +implementation("io.openlineage:openlineage-spark_${SCALA_BINARY_VERSION}:${OPENLINEAGE_SPARK_VERSION}") +``` + + + + +```groovy +implementation("io.openlineage:openlineage-spark:${OPENLINEAGE_SPARK_VERSION}") +``` + + + + +#### Place the JAR in your `${SPARK_HOME}/jars` directory + +:::info +This approach does not demonstrate how to configure the `OpenLineageSparkListener`. +Please refer to the [Configuration](#configuration) section. +::: + +1. Download the JAR and its checksum from Maven Central. +2. Verify the JAR's integrity using the checksum. +3. Upon successful verification, move the JAR to `${SPARK_HOME}/jars`. + +This script automates the download and verification process: + + + + +```bash +#!/usr/bin/env bash + +if [ -z "$SPARK_HOME" ]; then + echo "SPARK_HOME is not set. Please define it as your Spark installation directory." + exit 1 +fi + +OPENLINEAGE_SPARK_VERSION='1.9.0' # Example version +SCALA_BINARY_VERSION='2.13' # Example Scala version +ARTIFACT_ID="openlineage-spark_${SCALA_BINARY_VERSION}" +JAR_NAME="${ARTIFACT_ID}-${OPENLINEAGE_SPARK_VERSION}.jar" +CHECKSUM_NAME="${JAR_NAME}.sha512" +BASE_URL="https://repo1.maven.org/maven2/io/openlineage/${ARTIFACT_ID}/${OPENLINEAGE_SPARK_VERSION}" + +curl -O "${BASE_URL}/${JAR_NAME}" +curl -O "${BASE_URL}/${CHECKSUM_NAME}" + +echo "$(cat ${CHECKSUM_NAME}) ${JAR_NAME}" | sha512sum -c + +if [ $? -eq 0 ]; then + mv "${JAR_NAME}" "${SPARK_HOME}/jars" +else + echo "Checksum verification failed." + exit 1 +fi +``` + + + + +```bash +#!/usr/bin/env bash + +if [ -z "$SPARK_HOME" ]; then + echo "SPARK_HOME is not set. Please define it as your Spark installation directory." + exit 1 +fi + +OPENLINEAGE_SPARK_VERSION='1.8.0' # Example version +ARTIFACT_ID="openlineage-spark" +JAR_NAME="${ARTIFACT_ID}-${OPENLINEAGE_SPARK_VERSION}.jar" +CHECKSUM_NAME="${JAR_NAME}.sha512" +BASE_URL="https://repo1.maven.org/maven2/io/openlineage/${ARTIFACT_ID}/${OPENLINEAGE_SPARK_VERSION}" + +curl -O "${BASE_URL}/${JAR_NAME}" +curl -O "${BASE_URL}/${CHECKSUM_NAME}" + +echo "$(cat ${CHECKSUM_NAME}) ${JAR_NAME}" | sha512sum -c + +if [ $? -eq 0 ]; then + mv "${JAR_NAME}" "${SPARK_HOME}/jars" +else + echo "Checksum verification failed." + exit 1 +fi +``` + + + + +#### Use the `--jars` option with `spark-submit / spark-shell / pyspark` + +:::info +This approach does not demonstrate how to configure the `OpenLineageSparkListener`. +Please refer to the [Configuration](#configuration) section. +::: + +1. Download the JAR and its checksum from Maven Central. +2. Verify the JAR's integrity using the checksum. +3. Upon successful verification, submit a Spark application with the JAR using the `--jars` option. + +This script demonstrate this process: + + + + +```bash +#!/usr/bin/env bash + +OPENLINEAGE_SPARK_VERSION='1.9.0' # Example version +SCALA_BINARY_VERSION='2.13' # Example Scala version +ARTIFACT_ID="openlineage-spark_${SCALA_BINARY_VERSION}" +JAR_NAME="${ARTIFACT_ID}-${OPENLINEAGE_SPARK_VERSION}.jar" +CHECKSUM_NAME="${JAR_NAME}.sha512" +BASE_URL="https://repo1.maven.org/maven2/io/openlineage/${ARTIFACT_ID}/${OPENLINEAGE_SPARK_VERSION}" + +curl -O "${BASE_URL}/${JAR_NAME}" +curl -O "${BASE_URL}/${CHECKSUM_NAME}" + +echo "$(cat ${CHECKSUM_NAME}) ${JAR_NAME}" | sha512sum -c + +if [ $? -eq 0 ]; then + spark-submit --jars "path/to/${JAR_NAME}" \ + # ... other options +else + echo "Checksum verification failed." + exit 1 +fi +``` + + + + +```bash +#!/usr/bin/env bash + +OPENLINEAGE_SPARK_VERSION='1.8.0' # Example version +ARTIFACT_ID="openlineage-spark" +JAR_NAME="${ARTIFACT_ID}-${OPENLINEAGE_SPARK_VERSION}.jar" +CHECKSUM_NAME="${JAR_NAME}.sha512" +BASE_URL="https://repo1.maven.org/maven2/io/openlineage/${ARTIFACT_ID}/${OPENLINEAGE_SPARK_VERSION}" + +curl -O "${BASE_URL}/${JAR_NAME}" +curl -O "${BASE_URL}/${CHECKSUM_NAME}" + +echo "$(cat ${CHECKSUM_NAME}) ${JAR_NAME}" | sha512sum -c + +if [ $? -eq 0 ]; then + spark-submit --jars "path/to/${JAR_NAME}" \ + # ... other options +else + echo "Checksum verification failed." + exit 1 +fi +``` + + + + +#### Use the `--packages` option with `spark-submit / spark-shell / pyspark` + +:::info +This approach does not demonstrate how to configure the `OpenLineageSparkListener`. +Please refer to the [Configuration](#configuration) section. +::: + +Spark allows you to add packages at runtime using the `--packages` option with `spark-submit`. This +option automatically downloads the package from Maven Central (or other configured repositories) +during runtime and adds it to the classpath of your Spark application. + + + + +```bash +OPENLINEAGE_SPARK_VERSION='1.9.0' # Example version +SCALA_BINARY_VERSION='2.13' # Example Scala version + +spark-submit --packages "io.openlineage:openlineage-spark_${SCALA_BINARY_VERSION}:${OPENLINEAGE_SPARK_VERSION}" \ + # ... other options +``` + + + + +```bash +OPENLINEAGE_SPARK_VERSION='1.8.0' # Example version + +spark-submit --packages "io.openlineage:openlineage-spark::${OPENLINEAGE_SPARK_VERSION}" \ + # ... other options +``` + + + \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/integrations/spark/job-hierarchy.md b/versioned_docs/version-1.24.1/integrations/spark/job-hierarchy.md new file mode 100644 index 0000000..8929759 --- /dev/null +++ b/versioned_docs/version-1.24.1/integrations/spark/job-hierarchy.md @@ -0,0 +1,20 @@ +--- +sidebar_position: 5 +title: Job Hierarchy +--- + +:::info +Please get familiar with [OpenLineage Job Hierarchy concept](../../spec/job-hierarchy.md) before reading this. +::: + +In contrast to some other systems, Spark's job hierarchy is more opaque. +While you might schedule "Spark jobs" through code or notebooks, these represent an entirely different concept than what Spark sees internally. +For Spark, the true job is an action, a single computation unit initiated by the driver. +These actions materialize data only when you, the user, instruct them to write to a data sink or visualize it. +This means what you perceive as a single job can, in reality, be multiple execution units within Spark. +OpenLineage follows Spark execution model, and emits START/COMPLETE (and RUNNING) events +for each action. However, those are not the only events we emit. + +Recognizing the disconnect between your understanding and Spark's internal workings, +OpenLineage introduces application-level events that mark the start and end of a Spark application. +Each action-level run then points its [ParentRunFacet](../../spec/facets/run-facets/parent_run.md) to the corresponding Spark application run, providing a complete picture of the lineage. \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/integrations/spark/main_concept.md b/versioned_docs/version-1.24.1/integrations/spark/main_concept.md new file mode 100644 index 0000000..31ba4ff --- /dev/null +++ b/versioned_docs/version-1.24.1/integrations/spark/main_concept.md @@ -0,0 +1,33 @@ +--- +sidebar_position: 1 +title: Main Concepts +--- + +Spark jobs typically run on clusters of machines. A single machine hosts the "driver" application, +which constructs a graph of jobs - e.g., reading data from a source, filtering, transforming, and +joining records, and writing results to some sink- and manages execution of those jobs. Spark's +fundamental abstraction is the Resilient Distributed Dataset (RDD), which encapsulates distributed +reads and modifications of records. While RDDs can be used directly, it is far more common to work +with Spark Datasets or Dataframes, which is an API that adds explicit schemas for better performance +and the ability to interact with datasets using SQL. The Dataframe's declarative API enables Spark +to optimize jobs by analyzing and manipulating an abstract query plan prior to execution. + +## Collecting Lineage in Spark + +Collecting lineage requires hooking into Spark's `ListenerBus` in the driver application and +collecting and analyzing execution events as they happen. Both raw RDD and Dataframe jobs post events +to the listener bus during execution. These events expose the structure of the job, including the +optimized query plan, allowing the Spark integration to analyze the job for datasets consumed and +produced, including attributes about the storage, such as location in GCS or S3, table names in a +relational database or warehouse, such as Redshift or Bigquery, and schemas. In addition to dataset +and job lineage, Spark SQL jobs also report logical plans, which can be compared across job runs to +track important changes in query plans, which may affect the correctness or speed of a job. + +A single Spark application may execute multiple jobs. The Spark OpenLineage integration maps one +Spark job to a single OpenLineage Job. The application will be assigned a Run id at startup and each +job that executes will report the application's Run id as its parent job run. Thus, an application +that reads one or more source datasets, writes an intermediate dataset, then transforms that +intermediate dataset and writes a final output dataset will report three jobs- the parent application +job, the initial job that reads the sources and creates the intermediate dataset, and the final job +that consumes the intermediate dataset and produces the final output. As an image: +![image](./spark-job-creation.dot.png) diff --git a/versioned_docs/version-1.24.1/integrations/spark/metrics.md b/versioned_docs/version-1.24.1/integrations/spark/metrics.md new file mode 100644 index 0000000..ddfa25b --- /dev/null +++ b/versioned_docs/version-1.24.1/integrations/spark/metrics.md @@ -0,0 +1,28 @@ +--- +title: Spark Integration Metrics +sidebar_position: 8 +--- + +# Spark Integration Metrics + +The OpenLineage integration with Spark not only utilizes the Java client's metrics but also introduces its own set of metrics specific to Spark operations. Below is a list of these metrics. + +## Metrics Overview + +The following table provides the metrics added by the Spark integration, along with their definitions and types: + +| Metric | Definition | Type | +|--------------------------------------------------|------------------------------------------------------------------------|---------| +| `openlineage.spark.event.sql.start` | Number of SparkListenerSQLExecutionStart events received | Counter | +| `openlineage.spark.event.sql.end` | Number of SparkListenerSQLExecutionEnd events received | Counter | +| `openlineage.spark.event.job.start` | Number of SparkListenerJobStart events received | Counter | +| `openlineage.spark.event.job.end` | Number of SparkListenerJobEnd events received | Counter | +| `openlineage.spark.event.app.start` | Number of SparkListenerApplicationStart events received | Counter | +| `openlineage.spark.event.app.end` | Number of SparkListenerApplicationEnd events received | Counter | +| `openlineage.spark.event.app.start.memoryusage` | Percentage of used memory at the start of the application | Counter | +| `openlineage.spark.event.app.end.memoryusage` | Percentage of used memory at the end of the application | Counter | +| `openlineage.spark.unknownFacet.time` | Time spent building the UnknownEntryRunFacet | Timer | +| `openlineage.spark.dataset.input.execution.time` | Time spent constructing input datasets for execution | Timer | +| `openlineage.spark.facets.job.execution.time` | Time spent building job-specific facets | Timer | +| `openlineage.spark.facets.run.execution.time` | Time spent constructing run-specific facets | Timer | + diff --git a/versioned_docs/version-1.24.1/integrations/spark/quickstart/_category_.json b/versioned_docs/version-1.24.1/integrations/spark/quickstart/_category_.json new file mode 100644 index 0000000..1fc00be --- /dev/null +++ b/versioned_docs/version-1.24.1/integrations/spark/quickstart/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Quickstart", + "position": 4 +} diff --git a/versioned_docs/version-1.24.1/integrations/spark/quickstart/glue_settings.png b/versioned_docs/version-1.24.1/integrations/spark/quickstart/glue_settings.png new file mode 100644 index 0000000000000000000000000000000000000000..6ac3e5f877c299859c11e3e9cb74144d06531673 GIT binary patch literal 142022 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­n~c3K``^h31Scp&>VKlOI!V=z%;j6#C4Y{l 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 literal 0 HcmV?d00001 diff --git a/versioned_docs/version-1.24.1/integrations/spark/quickstart/jupyter_home.png b/versioned_docs/version-1.24.1/integrations/spark/quickstart/jupyter_home.png new file mode 100644 index 0000000000000000000000000000000000000000..f8ec0db7f37a2077566be8b63ea7d30b2ad37117 GIT binary patch literal 8868 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 literal 0 HcmV?d00001 diff --git a/versioned_docs/version-1.24.1/integrations/spark/quickstart/jupyter_new_notebook.png b/versioned_docs/version-1.24.1/integrations/spark/quickstart/jupyter_new_notebook.png new file mode 100644 index 0000000000000000000000000000000000000000..531794b87911bded4c952ee523bd5bae15ca5f3c GIT binary patch literal 14646 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 z/path/to/openlineage-spark_2.12-.jar` +2. **Add OpenLineage configuration in Job Parameters** + + In the same **Job details** tab, add a new property under **Job parameters**: + * Use the format **`param1=value1 --conf param2=value2 ... --conf paramN=valueN`**. + * Make sure every parameter except the first has an extra **`--conf`** in front of it. + * Example: `spark.extraListeners=io.openlineage.spark.agent.OpenLineageSparkListener --conf spark.openlineage.transport.type=http --conf spark.openlineage.transport.url=http://example.com --conf spark.openlineage.transport.endpoint=/api/v1/lineage --conf spark.openlineage.transport.auth.type=api_key --conf spark.openlineage.transport.auth.apiKey=aaaaa-bbbbb-ccccc-ddddd` + +3. **Set User Jars First Parameter** + + Add the **`--user-jars-first`** parameter and set its value to **`true`** + +![glue_settings.png](glue_settings.png) + +## Verification + +To confirm that OpenLineage registration has been successful, check the logs for the following entry: +``` +INFO SparkContext: Registered listener io.openlineage.spark.agent.OpenLineageSparkListener +``` + +If you see this log message, it indicates that OpenLineage has been correctly registered with your AWS Glue job. diff --git a/versioned_docs/version-1.24.1/integrations/spark/quickstart/quickstart_local.md b/versioned_docs/version-1.24.1/integrations/spark/quickstart/quickstart_local.md new file mode 100644 index 0000000..95e6a85 --- /dev/null +++ b/versioned_docs/version-1.24.1/integrations/spark/quickstart/quickstart_local.md @@ -0,0 +1,71 @@ +--- +sidebar_position: 1 +title: Quickstart with Jupyter +--- + +Trying out the Spark integration is super easy if you already have Docker Desktop and git installed. + +:::info +If you're on macOS Monterey (macOS 12) you'll have to release port 5000 before beginning by disabling the [AirPlay Receiver](https://developer.apple.com/forums/thread/682332). +::: + +Check out the OpenLineage project into your workspace with: +``` +git clone https://github.com/OpenLineage/OpenLineage +``` + +From the spark integration directory ($OPENLINEAGE_ROOT/integration/spark) execute +```bash +docker-compose up +``` +This will start Marquez as an Openlineage client and Jupyter Spark notebook on localhost:8888. On startup, the notebook container logs will show a list of URLs +including an access token, such as +```bash +notebook_1 | To access the notebook, open this file in a browser: +notebook_1 | file:///home/jovyan/.local/share/jupyter/runtime/nbserver-9-open.html +notebook_1 | Or copy and paste one of these URLs: +notebook_1 | http://abc12345d6e:8888/?token=XXXXXX +notebook_1 | or http://127.0.0.1:8888/?token=XXXXXX +``` + +Copy the URL with 127.0.0.1 as the hostname from your own log (the token will be different from mine) and paste it into your browser window. You should have a blank Jupyter notebook environment ready to go. + +![image](jupyter_home.png) + +Once your notebook environment is ready, click on the notebooks directory, then click on the New button to create a new Python 3 notebook. + +![image](jupyter_new_notebook.png) + +In the first cell in the window paste the following text: + +```python +from pyspark.sql import SparkSession + +spark = (SparkSession.builder.master('local') + .appName('sample_spark') + .config('spark.extraListeners', 'io.openlineage.spark.agent.OpenLineageSparkListener') + .config('spark.jars.packages', 'io.openlineage:openlineage-spark:1.7.0') + .config('spark.openlineage.transport.type', 'console') + .getOrCreate()) +``` +Once the Spark context is started, we adjust logging level to `INFO` with: +```python +spark.sparkContext.setLogLevel("INFO") +``` +and create some Spark table with: +```python +spark.createDataFrame([ + {'a': 1, 'b': 2}, + {'a': 3, 'b': 4} +]).write.mode("overwrite").saveAsTable("temp") +``` + +The command should output OpenLineage event in a form of log: +``` +22/08/01 06:15:49 INFO ConsoleTransport: {"eventType":"START","eventTime":"2022-08-01T06:15:49.671Z","run":{"runId":"204d9c56-6648-4d46-b6bd-f4623255d324","facets":{"spark_unknown":{"_producer":"https://github.com/OpenLineage/OpenLineage/tree/0.12.0-SNAPSHOT/integration/spark","_schemaURL":"https://openlineage.io/spec/1-0-2/OpenLineage.json#/$defs/RunFacet","inputs":[{"description":{"@class":"org.apache.spark.sql.execution.LogicalRDD","id":1,"streaming":false,"traceEnabled":false,"canonicalizedPlan":false},"inputAttributes":[],"outputAttributes":[{"name":"a","type":"long","metadata":{}},{"name":"b","type":"long","metadata":{}}]}]},"spark.logicalPlan":{"_producer":"https://github.com/OpenLineage/OpenLineage/tree/0.12.0-SNAPSHOT/integration/spark","_schemaURL":"https://openlineage.io/spec/1-0-2/OpenLineage.json#/$defs/RunFacet","plan":[{"class":"org.apache.spark.sql.execution.command.CreateDataSourceTableAsSelectCommand","num-children":1,"table":{"product-class":"org.apache.spark.sql.catalyst.catalog.CatalogTable","identifier":{"product-class":"org.apache.spark.sql.catalyst.TableIdentifier","table":"temp"},"tableType":{"product-class":"org.apache.spark.sql.catalyst.catalog.CatalogTableType","name":"MANAGED"},"storage":{"product-class":"org.apache.spark.sql.catalyst.catalog.CatalogStorageFormat","compressed":false,"properties":null},"schema":{"type":"struct","fields":[]},"provider":"parquet","partitionColumnNames":[],"owner":"","createTime":1659334549656,"lastAccessTime":-1,"createVersion":"","properties":null,"unsupportedFeatures":[],"tracksPartitionsInCatalog":false,"schemaPreservesCase":true,"ignoredProperties":null},"mode":null,"query":0,"outputColumnNames":"[a, b]"},{"class":"org.apache.spark.sql.execution.LogicalRDD","num-children":0,"output":[[{"class":"org.apache.spark.sql.catalyst.expressions.AttributeReference","num-children":0,"name":"a","dataType":"long","nullable":true,"metadata":{},"exprId":{"product-class":"org.apache.spark.sql.catalyst.expressions.ExprId","id":6,"jvmId":"6a1324ac-917e-4e22-a0b9-84a5f80694ad"},"qualifier":[]}],[{"class":"org.apache.spark.sql.catalyst.expressions.AttributeReference","num-children":0,"name":"b","dataType":"long","nullable":true,"metadata":{},"exprId":{"product-class":"org.apache.spark.sql.catalyst.expressions.ExprId","id":7,"jvmId":"6a1324ac-917e-4e22-a0b9-84a5f80694ad"},"qualifier":[]}]],"rdd":null,"outputPartitioning":{"product-class":"org.apache.spark.sql.catalyst.plans.physical.UnknownPartitioning","numPartitions":0},"outputOrdering":[],"isStreaming":false,"session":null}]},"spark_version":{"_producer":"https://github.com/OpenLineage/OpenLineage/tree/0.12.0-SNAPSHOT/integration/spark","_schemaURL":"https://openlineage.io/spec/1-0-2/OpenLineage.json#/$defs/RunFacet","spark-version":"3.1.2","openlineage-spark-version":"0.12.0-SNAPSHOT"}}},"job":{"namespace":"default","name":"sample_spark.execute_create_data_source_table_as_select_command","facets":{}},"inputs":[],"outputs":[{"namespace":"file","name":"/home/jovyan/notebooks/spark-warehouse/temp","facets":{"dataSource":{"_producer":"https://github.com/OpenLineage/OpenLineage/tree/0.12.0-SNAPSHOT/integration/spark","_schemaURL":"https://openlineage.io/spec/facets/1-0-0/DatasourceDatasetFacet.json#/$defs/DatasourceDatasetFacet","name":"file","uri":"file"},"schema":{"_producer":"https://github.com/OpenLineage/OpenLineage/tree/0.12.0-SNAPSHOT/integration/spark","_schemaURL":"https://openlineage.io/spec/facets/1-0-0/SchemaDatasetFacet.json#/$defs/SchemaDatasetFacet","fields":[{"name":"a","type":"long"},{"name":"b","type":"long"}]},"lifecycleStateChange":{"_producer":"https://github.com/OpenLineage/OpenLineage/tree/0.12.0-SNAPSHOT/integration/spark","_schemaURL":"https://openlineage.io/spec/facets/1-0-0/LifecycleStateChangeDatasetFacet.json#/$defs/LifecycleStateChangeDatasetFacet","lifecycleStateChange":"CREATE"}},"outputFacets":{}}],"producer":"https://github.com/OpenLineage/OpenLineage/tree/0.12.0-SNAPSHOT/integration/spark","schemaURL":"https://openlineage.io/spec/1-0-2/OpenLineage.json#/$defs/RunEvent"} +``` + +Generated JSON contains output dataset name and location `{"namespace":"file","name":"/home/jovyan/notebooks/spark-warehouse/temp"`, schema fields `[{"name":"a","type":"long"},{"name":"b","type":"long"}]`, etc. + + +More comprehensive demo, that integrates Spark events with Marquez backend can be found on our blog [Tracing Data Lineage with OpenLineage and Apache Spark](https://openlineage.io/blog/openlineage-spark/) diff --git a/versioned_docs/version-1.24.1/integrations/spark/spark-job-creation.dot.png b/versioned_docs/version-1.24.1/integrations/spark/spark-job-creation.dot.png new file mode 100644 index 0000000000000000000000000000000000000000..87e66700549dca751dfe2c00bf048767e02570b3 GIT binary patch literal 35513 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

)JXx9w5viBLGW`^Kg234ShdQ;Z2k(_zvrz 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

XS&JnwPwWG$|*QIV(PzI_JRv< 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 literal 0 HcmV?d00001 diff --git a/versioned_docs/version-1.24.1/integrations/spark/spark.md b/versioned_docs/version-1.24.1/integrations/spark/spark.md new file mode 100644 index 0000000..fe48285 --- /dev/null +++ b/versioned_docs/version-1.24.1/integrations/spark/spark.md @@ -0,0 +1,16 @@ +--- +sidebar_position: 1 +title: Apache Spark +--- + +:::info +This integration is known to work with latest Spark versions as well as Apache Spark 2.4. +Please refer [here](https://github.com/OpenLineage/OpenLineage/tree/main/integration#openlineage-integrations) +for up-to-date information on versions supported. +::: + +This integration employs the `SparkListener` interface through `OpenLineageSparkListener`, offering +a comprehensive monitoring solution. It examines SparkContext-emitted events to extract metadata +associated with jobs and datasets, utilizing the RDD and DataFrame dependency graphs. This method +effectively gathers information from various data sources, including filesystem sources (e.g., S3 +and GCS), JDBC backends, and data warehouses such as Redshift and Bigquery. diff --git a/versioned_docs/version-1.24.1/integrations/spark/spark_column_lineage.md b/versioned_docs/version-1.24.1/integrations/spark/spark_column_lineage.md new file mode 100644 index 0000000..5e53a76 --- /dev/null +++ b/versioned_docs/version-1.24.1/integrations/spark/spark_column_lineage.md @@ -0,0 +1,94 @@ +--- +sidebar_position: 7 +title: Column-Level Lineage +--- + +:::warning + +Column-level lineage works only with Spark 3. +::: + +:::info +Column-level lineage for Spark is turned on by default and requires no additional work to be done. The following documentation describes its internals. +::: + +:::info +Lineage contains information about what fields were used to create of influence the field but also how, see [Transformation Types](spec/facets/dataset-facets/column_lineage_facet.md#transformation-type) +::: + +Column-level lineage provides fine-grained information on datasets dependencies. Not only do we know the dependency exists, but we are also able to understand which input columns are used to produce output columns. This allows for answering questions like *Which root input columns are used to construct column x?* + +## Standard specification + +Collected information is sent in OpenLineage event within `columnLineage` dataset facet described [here](spec/facets/dataset-facets/column_lineage_facet.md). + +## Code architecture and its mechanics + +Column-level lineage has been implemented separately from the rest of builders and visitors extracting lineage information from Spark logical plans. As a result the codebase is stored in `io.openlineage.spark3.agent.lifecycle.plan.columnLineage` package within classes responsible only for this feature. + +* Class `ColumnLevelLineageUtils.java` is an entry point to run the mechanism and is used within `OpenLineageRunEventBuilder`. + +* Classes `ColumnLevelLineageUtilsNonV2CatalogTest` and `ColumnLevelLineageUtilsV2CatalogTest` contain real-life test cases which run Spark jobs and get an access to the last query plan executed. + They evaluate column-level lineage based on the plan and expected output schema. + Then, they verify if this meets the requirements. + This allows testing column-level lineage behavior in real scenarios. The more tests and scenarios put here, the better. + +* Class `ColumnLevelLineageBuilder` contains both the logic of building output facet (`ColumnLineageDatasetFacetFields`) +and datastructures containing necessary information: + * schema - `SchemaDatasetFacet` contains information about output schema + * inputs - map pointing from `ExprId` to column name and `DatasetIdentifier` identifying the datasource + * outputs - map pointing from output field name to its `ExprId` + * exprDependencies - map pointing from `ExprId` to set of its `Dependency` objects containing `ExprId` and information about type of the dependency. + * datasetDependencies - list of `ExprId` representing pseudo-expressions representing operations like `filter`, `join` etc. + * externalExpressionMappings - map pointing from `ColumnMeta` object to `ExprId` used for dependencies extracted by `sql-parser` + + +* Class `ColumnLevelLineageBuilder` is used when traversing logical plans to store all the information required to produce column-level lineage. + It allows storing input/output columns. It also stores dependencies between the expressions contained in query plan. + Once inputs, outputs and dependencies are filled, build method is used to produce output facet (`ColumnLineageDatasetFacetFields`). + +* `OutputFieldsCollector` class is used to traverse the plan to gather the `outputs`, +even though the information about output dataset is already in `schema`, it's not coupled information about the outputs `ExprId`. +The collector traverses the plan and matches the outputs existing there, inside `Aggregate` or `Project` objects, with the ones in `schema` by their name. + +* `InputFieldsCollector` class is used to collect the inputs which can be extracted from `DataSourceV2Relation`, `DataSourceV2ScanRelation`, `HiveTableRelation` or `LogicalRelation`. +Each input field has its `ExprId` within the plan. Each input is identified by `DatasetIdentifier`, which means it contains name and namespace, of a dataset and an input field. + +* `ExpressionDependenciesCollector` traverses the plan to identify dependencies between different expressions using their `ExprId`. Dependencies map parent expressions to its dependencies with additional information about the transformation type. +This is used evaluate which inputs influenced certain output and what kind of influence was it. + +### Expression dependency collection process + +For each node in `LogicalPlan` the `ExpressionDependencyCollector` attempts to extract the column lineage information based on its type. +First it goes through `ColumnLineageVisitors` to check if any applies to current node, if so then it extract dependencies from them. +Next if the node is `LogicalRelation` and relation type is `JDBCRelation`, the sql-parser extracts lineage data from query string itself. + +:::warning + +Because Sql parser only parses the query string in `JDBCRelation` it does not collect information about input field types or transformation types. +The only info collected is the name of the table/view and field, as it is mentioned in the query. +::: + +After that all that's left are following types of nodes: `Project`,`Aggregate`, `Join`, `Filter`, `Sort`. +Each of them contains dependency expressions that can be added to one of the lists `expressions` or `datasetDependencies`. + +When node is `Aggregate`, `Join`, `Filter` or `Sort` it contains dependencies that don't affect one single output but all the outputs, +so they need to be treated differently than normal dependencies. +For each of those nodes the new `ExprId` is created to represent "all outputs", all its dependencies will be of `INDIRECT` type. + +For each of the `expressions` the collector tries to go through it and possible children expressions and add them to `exprDependencies` map with appropriate transformation type and `masking` flag. +Most of the expressions represent `DIRECT` transformation, only exceptions are `If` and `CaseWhen` which contain condition expressions. + +### Facet building process + +For each of the outputs `ColumnLevelLineageBuilder` goes through the `exprDependencies` to build the list final dependencies, then using `inputs` maps them to fields in datasets. +During the process it also unravels the transformation type between the input and output. +To unravel two dependencies implement following logic: +- if current type is `INDIRECT` the result takes the type and subtype from current +- if current type is `DIRECT` and other one is null, result is null +- if current type is `DIRECT` and other is `INDIRECT` the result takes type and subtype from other +- if both are `DIRECT` the result is type `DIRECT`, subtype is the first existing from the order `AGGREGATION`, `TRANSFORMATION`, `IDENTITY` +- if any of the transformations is masking, the result is masking + +The inputs are also mapped for all dataset dependencies. The result is added to each output. +Finally, the list of outputs with all their inputs is mapped to `ColumnLineageDatasetFacetFields` object. diff --git a/versioned_docs/version-1.24.1/integrations/spark/testing.md b/versioned_docs/version-1.24.1/integrations/spark/testing.md new file mode 100644 index 0000000..0100317 --- /dev/null +++ b/versioned_docs/version-1.24.1/integrations/spark/testing.md @@ -0,0 +1,94 @@ +--- +title: Testing +sidebar_position: 8 +--- + +# Testing + +## Configurable Integration Test + +Starting of version 1.17, OpenLineage Spark integration provides a command line tooling to help +creating custom integration tests. `configurable-test.sh` script can be used to build +`openlineage-spark` from the current directory, script arguments are used to pass Spark +job. Then, emitted OpenLineage events are validated against JSON files with expected events' fields. Build process and +integration test run itself is performed within Docker environment which makes the command +Java environment agnostic. + +:::info +Quickstart: try running following command from OpenLineage project root directory: +```bash +./integration/spark/cli/configurable-test.sh --spark ./integration/spark/cli/spark-conf.yml --test ./integration/spark/cli/tests +``` +This should run four integration tests `./integration/spark/cli/tests` and store their output into +`./integration/spark/cli/runs`. Feel free to add extra test directories with custom tests. +::: + +What's happening when running `configurable-test.sh` command? + * At first, a docker container with Java 11 is created. It builds a docker image `openlineage-test:$OPENLINEAGE_VERSION`. During the build process, all the internal dependencies (like `openlineage-java`) are added to the image. It's because we don't want to build it in each run as it speeds up single command run. In case of subproject changes, a new image has to be built. + * Once the docker image is built, docker container is started and starts gradle `configurableIntegrationTest` task. Task depends on `shadowJar` to build `openlineage-spark` jar. The built jar should be also available on host machine. + * Gradle test task spawns additional Spark containers which run the Spark job and emit OpenLineage events to local file. A gradle test code has access to mounted event file location, fetches the events emitted and verifies them against expected JSON events. Matching is done through MockServer Json body matching with `ONLY_MATCHING_FIELDS` flag set, as it's happening within other integration tests. + * Test output is written into `./integration/spark/cli/runs` directories with subdirectories containing test definition and file with events that was emitted. + +:::info +Please be aware that first run of the command will download several gigabytes of docker images being used +as well as gradle dependencies required to build JAR from the source code. All of them are stored +within Docker volumes, which makes consecutive runs a way faster. +::: + +### Command details + +It is important to run command from the project root directory. This is the only way to let +created Docker containers get mounted volumes containing spark integration code, java client code, +sql integration code. Command has extra check to verify if work directory is correct. + +Try running: +```bash +./integration/spark/cli/configurable-test.sh --help +``` +to see all the options available within your version. These should include: + * `--spark` - to define spark environment configuration file, + * `--test` - location for the directory containing tests, + * `--clean` - flague marking docker image to be re-build from scratch. + +### Spark configuration file + +This an example Spark environment configuration file: +```yaml +appName: "CLI test application" +sparkVersion: 3.3.4 +scalaBinaryVersion: 2.12 +enableHiveSupport: true +packages: + - org.apache.iceberg:iceberg-spark-runtime-3.3_2.12:1.5.2 +sparkConf: + spark.openlineage.debugFacet: enabled +``` + +* `sparkVersion` and `scalaBinaryVersion` are used to determine Spark and Scala version to be tested. Spark is run on docker from the images available in +[https://quay.io/repository/openlineage/spark?tab=tags](https://quay.io/repository/openlineage/spark?tab=tags). A combination of Spark and Scala version provided within +the config has to match images available. +* `appName` and `enableHiveSupport` parameters are used when starting Spark session. +* `sparkConf` can be used to pass any spark configuration entries. OpenLineage transport defined is file based with a specified file location and is set within the test being run. Those settings should not be overrider. +* `packages` lets define custom jar packages to be installed with `spark-submit` command. + +As of version 1.18, Spark configuration can accept instead of `sparkVersion`, a configuration +entries to determine Docker image to be run on: +```yaml +appName: "CLI test application" +docker: + image: "apache/spark:3.3.3-scala2.12-java11-python3-ubuntu" + sparkSubmit: /opt/spark/bin/spark-submit + waitForLogMessage: ".*ShutdownHookManager: Shutdown hook called.*" +scalaBinaryVersion: 2.12 +``` +where: + * `image` specifies docker image to be used to run Spark job, + * `sparkSubmit` is file location of `spark-submit` command, + * `waitForLogMessage` is regex for log entry determining a Spark job is finished. + +### Tests definition directories + + * Specified test directory should contain one or more directories and each of the subdirectories contains separate test definition. + * Each test directory should contain a single `.sql` or `.py` pySpark code file containing a job definition. For `.sql` file each line of the file is decorated with `spark.sql()` and transformed into pySpark script. +For pySpark scripts, a user should instantiate SparkSession with OpenLineage parameters configured properly. Please refer to existing tests for usage examples. + * Each test directory should contain on or more event definition file with `.json` extensions defining an expected content of any of the events emitted by the job run. diff --git a/versioned_docs/version-1.24.1/integrations/trino.md b/versioned_docs/version-1.24.1/integrations/trino.md new file mode 100644 index 0000000..c45d6bf --- /dev/null +++ b/versioned_docs/version-1.24.1/integrations/trino.md @@ -0,0 +1,60 @@ +--- +sidebar_position: 7 +title: Trino +--- + +:::info +This integration is known to work with Trino 450 and later. +::: + +Trino is a distributed SQL query engine targeted for big data analytical workloads. Trino queries are typically run on +Trino `cluster`, where distributed set of Trino `workers` provides compute power and Trino `coordinator` is responsible +for query submission. By a rich set of available connectors, you can use Trino to execute SQL queries with the same exact +syntax [on different underlying systems](https://trino.io/docs/current/connector.html) - such as RDBMs databases, hive metastore, s3 and others. + +Trino enables running queries for fetching the data as well as creating new structures - such as tables, views or materialized views. + +To learn more about Trino, visit their [documentation site](https://trino.io/docs/current/). + +## How does Trino work with OpenLineage? + +Collecting lineage in Trino requires configuring a `plugin`, which will use `EventListener` interface of Trino to extract +lineage information from metadata available for this interface. + +Trino OpenLineage Event Listener plugin will yield 2 events for each executed query - one for STARTED and one for +SUCCEEDED/FAILED query. While first one already provides us with new job information, actual lineage information +(inlets/outlets) will be available in the latter event. + +This plugin supports both table and column level lineage. + +## Configuring Trino OpenLineage plugin + +1. Create configuration file named `openlineage-event-listener.properties` + +```properties +event-listener.name=openlineage +openlineage-event-listener.transport.type=HTTP +openlineage-event-listener.transport.url=__OPENLINEAGE_URL__ +openlineage-event-listener.trino.uri=__TRINO_URI__ +``` + +Make sure to set: +- `__OPENLINEAGE_URL__` - address where OpenLineage API is reachable so plugin can post lineage information. +- `__TRINO_URI__` - address (preferably DNS) of a Trino cluster. It will be used for rendering dataset namespace. + +2. Extend properties file used to configure Trino **coordinator** with following line: + +```properties +event-listener.config-files=etc/openlineage-event-listener.properties +``` + +Make sure that the path to `event-listener.config-files` is recognizable by Trino coordinator. + +### Official documentation + +Current documentation on Trino OpenLineage Event Listener with full list of available configuration options +[is maintained here](https://trino.io/docs/current/admin/event-listeners-openlineage.html). + +## Feedback + +What did you think of this guide? You can reach out to us on [slack](http://bit.ly/OpenLineageSlack) and leave us feedback! diff --git a/versioned_docs/version-1.24.1/model.png b/versioned_docs/version-1.24.1/model.png new file mode 100644 index 0000000000000000000000000000000000000000..a5529802e4144361d865ef78a6799e2d122ccfdb GIT binary patch literal 21942 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 \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/releases/0_10_0.md b/versioned_docs/version-1.24.1/releases/0_10_0.md new file mode 100644 index 0000000..37df489 --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/0_10_0.md @@ -0,0 +1,29 @@ +--- +title: 0.10.0 +sidebar_position: 9983 +--- + +# 0.10.0 - 2022-06-24 + +### Added + +* Add static code anlalysis tool [mypy](http://mypy-lang.org) to run in CI for against all python modules ([`#802`](https://github.com/openlineage/openlineage/issues/802)) [@howardyoo](https://github.com/howardyoo) +* Extend `SaveIntoDataSourceCommandVisitor` to extract schema from `LocalRelaiton` and `LogicalRdd` in spark integration ([`#794`](https://github.com/OpenLineage/OpenLineage/pull/794)) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) +* Add `InMemoryRelationInputDatasetBuilder` for `InMemory` datasets to Spark integration ([`#818`](https://github.com/OpenLineage/OpenLineage/pull/818)) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) +* Add copyright to source files [`#755`](https://github.com/OpenLineage/OpenLineage/pull/755) [@merobi-hub](https://github.com/merobi-hub) +* Add `SnowflakeOperatorAsync` extractor support to Airflow integration [`#869`](https://github.com/OpenLineage/OpenLineage/pull/869) [@merobi-hub](https://github.com/merobi-hub) +* Add PMD analysis to proxy project ([`#889`](https://github.com/OpenLineage/OpenLineage/pull/889)) [@howardyoo](https://github.com/howardyoo) + +### Changed + +* Skip `FunctionRegistry.class` serialization in Spark integration ([`#828`](https://github.com/OpenLineage/OpenLineage/pull/828)) [@mobuchowski](https://github.com/mobuchowski) +* Install new `rust`-based SQL parser by default in Airflow integration ([`#835`](https://github.com/OpenLineage/OpenLineage/pull/835)) [@mobuchowski](https://github.com/mobuchowski) +* Improve overall `pytest` and integration tests for Airflow integration ([`#851`](https://github.com/OpenLineage/OpenLineage/pull/851),[`#858`](https://github.com/OpenLineage/OpenLineage/pull/858)) [@denimalpaca](https://github.com/denimalpaca) +* Reduce OL event payload size by excluding local data and including output node in start events ([`#881`](https://github.com/OpenLineage/OpenLineage/pull/881)) [@collado-mike](https://github.com/collado-mike) +* Split spark integration into submodules ([`#834`](https://github.com/OpenLineage/OpenLineage/pull/834), [`#890`](https://github.com/OpenLineage/OpenLineage/pull/890)) [@tnazarew](https://github.com/tnazarew) [@mobuchowski](https://github.com/mobuchowski) + +### Fixed + +* Conditionally import `sqlalchemy` lib for Great Expectations integration ([`#826`](https://github.com/OpenLineage/OpenLineage/pull/826)) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) +* Add check for missing **class** `org.apache.spark.sql.catalyst.plans.logical.CreateV2Table` in Spark integration ([`#866`](https://github.com/OpenLineage/OpenLineage/pull/866)) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) +* Fix static code analysis issues ([`#867`](https://github.com/OpenLineage/OpenLineage/pull/867),[`#874`](https://github.com/OpenLineage/OpenLineage/pull/874)) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/releases/0_11_0.md b/versioned_docs/version-1.24.1/releases/0_11_0.md new file mode 100644 index 0000000..7a422a2 --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/0_11_0.md @@ -0,0 +1,24 @@ +--- +title: 0.11.0 +sidebar_position: 9982 +--- + +# 0.11.0 - 2022-07-07 + +### Added + +* HTTP option to override timeout and properly close connections in `openlineage-java` lib. [`#909`](https://github.com/OpenLineage/OpenLineage/pull/909) [@mobuchowski](https://github.com/mobuchowski) +* Dynamic mapped tasks support to Airflow integration [`#906`](https://github.com/OpenLineage/OpenLineage/pull/906) [@JDarDagran](https://github.com/JDarDagran) +* `SqlExtractor` to Airflow integration [`#907`](https://github.com/OpenLineage/OpenLineage/pull/907) [@JDarDagran](https://github.com/JDarDagran) +* [PMD](https://pmd.github.io) to Java and Spark builds in CI [`#898`](https://github.com/OpenLineage/OpenLineage/pull/898) [@merobi-hub](https://github.com/merobi-hub) + +### Changed + +* When testing extractors in the Airflow integration, set the extractor length assertion dynamic [`#882`](https://github.com/OpenLineage/OpenLineage/pull/882) [@denimalpaca](https://github.com/denimalpaca) +* Render templates as start of integration tests for `TaskListener` in the Airflow integration [`#870`](https://github.com/OpenLineage/OpenLineage/pull/870) [@mobuchowski](https://github.com/mobuchowski) + +### Fixed + +* Dependencies bundled with `openlineage-java` lib. [`#855`](https://github.com/OpenLineage/OpenLineage/pull/855) [@collado-mike](https://github.com/collado-mike) +* [PMD](https://pmd.github.io) reported issues [`#891`](https://github.com/OpenLineage/OpenLineage/pull/891) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) +* Spark casting error and session catalog support for `iceberg` in Spark integration [`#856`](https://github.com/OpenLineage/OpenLineage/pull/856) [@wslulciuc](https://github.com/wslulciuc) diff --git a/versioned_docs/version-1.24.1/releases/0_12_0.md b/versioned_docs/version-1.24.1/releases/0_12_0.md new file mode 100644 index 0000000..03a3f59 --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/0_12_0.md @@ -0,0 +1,26 @@ +--- +title: 0.12.0 +sidebar_position: 9981 +--- + +# 0.12.0 - 2022-08-01 + +### Added + +* Add Spark 3.3.0 support [`#950`](https://github.com/OpenLineage/OpenLineage/pull/950) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) +* Add Apache Flink integration [`#951`](https://github.com/OpenLineage/OpenLineage/pull/951) [@mobuchowski](https://github.com/mobuchowski) +* Add ability to extend column level lineage mechanism [`#922`](https://github.com/OpenLineage/OpenLineage/pull/922) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) +* Add ErrorMessageRunFacet [`#897`](https://github.com/OpenLineage/OpenLineage/pull/897) [@mobuchowski](https://github.com/mobuchowski) +* Add SQLCheckExtractors [`#717`](https://github.com/OpenLineage/OpenLineage/pull/717) [@denimalpaca](https://github.com/denimalpaca) +* Add RedshiftSQLExtractor & RedshiftDataExtractor [`#930`](https://github.com/OpenLineage/OpenLineage/pull/930) [@JDarDagran](https://github.com/JDarDagran) +* Add dataset builder for AlterTableCommand [`#927`](https://github.com/OpenLineage/OpenLineage/pull/927) [@tnazarew](https://github.com/tnazarew) + +### Changed + +* Limit Delta events [`#905`](https://github.com/OpenLineage/OpenLineage/pull/905) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) +* Airflow integration: allow lineage metadata to flow through inlets and outlets [`#914`](https://github.com/OpenLineage/OpenLineage/pull/914) [@fenil25](https://github.com/fenil25) + +### Fixed + +* Limit size of serialized plan [`#917`](https://github.com/OpenLineage/OpenLineage/pull/917) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) +* Fix noclassdef error [`#942`](https://github.com/OpenLineage/OpenLineage/pull/942) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) diff --git a/versioned_docs/version-1.24.1/releases/0_13_0.md b/versioned_docs/version-1.24.1/releases/0_13_0.md new file mode 100644 index 0000000..47b8705 --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/0_13_0.md @@ -0,0 +1,35 @@ +--- +title: 0.13.0 +sidebar_position: 9980 +--- + +# 0.13.0 - 2022-08-22 + +### Added + +* Add BigQuery check support [`#960`](https://github.com/OpenLineage/OpenLineage/pull/960) [@denimalpaca](https://github.com/denimalpaca) + *Adds logic and support for proper dynamic class inheritance for BigQuery-style operators. (BigQuery's extractor needed additional logic to support the forthcoming `BigQueryColumnCheckOperator` and `BigQueryTableCheckOperator`.)* +* Add `RUNNING` `EventType` in spec and Python client [`#972`](https://github.com/OpenLineage/OpenLineage/pull/972) [@mzareba382](https://github.com/mzareba382) + *Introduces a `RUNNING` event state in the OpenLineage spec to indicate a running task and adds a `RUNNING` event type in the Python API.* +* Use databases & schemas in SQL Extractors [`#974`](https://github.com/OpenLineage/OpenLineage/pull/974) [@JDarDagran](https://github.com/JDarDagran) + *Allows the Airflow integration to differentiate between databases and schemas. (There was no notion of databases and schemas when querying and parsing results from `information_schema` tables.)* +* Implement Event forwarding feature via HTTP protocol [`#995`](https://github.com/OpenLineage/OpenLineage/pull/995) [@howardyoo](https://github.com/howardyoo) + *Adds `HttpLineageStream` to forward a given OpenLineage event to any HTTP endpoint.* +* Introduce `SymlinksDatasetFacet` to spec [`#936`](https://github.com/OpenLineage/OpenLineage/pull/936) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Creates a new facet, the `SymlinksDatasetFacet`, to support the storing of alternative dataset names.* +* Add Azure Cosmos Handler to Spark integration [`#983`](https://github.com/OpenLineage/OpenLineage/pull/983) [@hmoazam](https://github.com/hmoazam) + *Defines a new interface, the `RelationHandler`, to support Spark data sources that do not have `TableCatalog`, `Identifier`, or `TableProperties` set, as is the case with the Azure Cosmos DB Spark connector.* +* Support OL Datasets in manual lineage inputs/outputs [`#1015`](https://github.com/OpenLineage/OpenLineage/pull/1015) [@conorbev](https://github.com/conorbev) + *Allows Airflow users to create OpenLineage Dataset classes directly in DAGs with no conversion necessary. (Manual lineage definition required users to create an `airflow.lineage.entities.Table`, which was then converted to an OpenLineage Dataset.)* +* Create ownership facets [`#996`](https://github.com/OpenLineage/OpenLineage/pull/996) [@julienledem](https://github.com/julienledem) + *Adds an ownership facet to both Dataset and Job in the OpenLineage spec to capture ownership of jobs and datasets.* + +### Changed +* Use `RUNNING` EventType in Flink integration for currently running jobs [`#985`](https://github.com/OpenLineage/OpenLineage/pull/985) [@mzareba382](https://github.com/mzareba382) + *Makes use of the new `RUNNING` event type in the Flink integration, changing events sent by Flink jobs from `OTHER` to this new type.* +* Convert task objects to JSON-encodable objects when creating custom Airflow version facets [`#1018`](https://github.com/OpenLineage/OpenLineage/pull/1018) [@fm100](https://github.com/fm100) + *Implements a `to_json_encodable` function in the Airflow integration to make task objects JSON-encodable.* + +### Fixed +* Add support for custom SQL queries in v3 Great Expectations API [`#1025`](https://github.com/OpenLineage/OpenLineage/pull/1025) [@collado-mike](https://github.com/collado-mike) + *Fixes support for custom SQL statements in the Great Expectations provider. (The Great Expectations custom SQL datasource was not applied to the support for the V3 checkpoints API.)* \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/releases/0_13_1.md b/versioned_docs/version-1.24.1/releases/0_13_1.md new file mode 100644 index 0000000..cbdfbf2 --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/0_13_1.md @@ -0,0 +1,12 @@ +--- +title: 0.13.1 +sidebar_position: 9979 +--- + +# 0.13.1 - 2022-08-25 + +### Fixed +* Rename all `parentRun` occurrences to `parent` in Airflow integration [`1037`](https://github.com/OpenLineage/OpenLineage/pull/1037) [@fm100](https://github.com/fm100) + *Changes the `parentRun` property name to `parent` in the Airflow integration to match the spec.* +* Do not change task instance during `on_running` event [`1028`](https://github.com/OpenLineage/OpenLineage/pull/1028) [@JDarDagran](https://github.com/JDarDagran) + *Fixes an issue in the Airflow integration with the `on_running` hook, which was changing the `TaskInstance` object along with the `task` attribute.* \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/releases/0_14_0.md b/versioned_docs/version-1.24.1/releases/0_14_0.md new file mode 100644 index 0000000..f53bbeb --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/0_14_0.md @@ -0,0 +1,32 @@ +--- +title: 0.14.0 +sidebar_position: 9978 +--- + +# 0.14.0 - 2022-09-06 + +### Added +* Support ABFSS and Hadoop Logical Relation in Column-level lineage [`#1008`](https://github.com/OpenLineage/OpenLineage/pull/1008) [@wjohnson](https://github.com/wjohnson) + *Introduces an `extractDatasetIdentifier` that uses similar logic to `InsertIntoHadoopFsRelationVisitor` to pull out the path on the HDFS compliant file system; tested on ABFSS and DBFS (Databricks FileSystem) to prove that lineage could be extracted using non-SQL commands.* +* Add Kusto relation visitor [`#939`](https://github.com/OpenLineage/OpenLineage/pull/939) [@hmoazam](https://github.com/hmoazam) + *Implements a `KustoRelationVisitor` to support lineage for Azure Kusto's Spark connector.* +* Add ColumnLevelLineage facet doc [`#1020`](https://github.com/OpenLineage/OpenLineage/pull/1020) [@julienledem](https://github.com/julienledem) + *Adds documentation for the Column-level lineage facet.* +* Include symlinks dataset facet [`#935`](https://github.com/OpenLineage/OpenLineage/pull/935) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Includes the recently introduced `SymlinkDatasetFacet` in generated OpenLineage events.* +* Add support for dbt 1.3 beta's metadata changes [`#1051`](https://github.com/OpenLineage/OpenLineage/pull/1051) [@mobuchowski](https://github.com/mobuchowski) + *Makes projects that are composed of only SQL models work on 1.3 beta (dbt 1.3 renamed the `compiled_sql` field to `compiled_code` to support Python models). Does not provide support for dbt's Python models.* +* Support Flink 1.15 [`#1009`](https://github.com/OpenLineage/OpenLineage/pull/1009) [@mzareba382](https://github.com/mzareba382) + *Adds support for Flink 1.15.* +* Add Redshift dialect to the SQL integration [`#1066`](https://github.com/OpenLineage/OpenLineage/pull/1066) [@mobuchowski](https://github.com/mobuchowski) + *Adds support for Redshift's SQL dialect in OpenLineage's SQL parser, including quirks such as the use of square brackets in JSON paths. (Note, this does not add support for all of Redshift's custom syntax.)* + +### Changed +* Make the timeout configurable in the Spark integration [`#1050`](https://github.com/OpenLineage/OpenLineage/pull/1050) [@tnazarew](https://github.com/tnazarew) + *Makes timeout configurable by the user. (In some cases, the time needed to send events was longer than 5 seconds, which exceeded the timeout value.)* + +### Fixed +* Add a dialect parameter to Great Expectations SQL parser calls [`#1049`](https://github.com/OpenLineage/OpenLineage/pull/1049) [@collado-mike](https://github.com/collado-mike) + *Specifies the dialect name from the SQL engine.* +* Fix Delta 2.1.0 with Spark 3.3.0 [`#1065`](https://github.com/OpenLineage/OpenLineage/pull/1065) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Allows delta support for Spark 3.3 and fixes potential issues. (The Openlineage integration for Spark 3.3 was turned on without delta support, as delta did not support Spark 3.3 at that time.)* diff --git a/versioned_docs/version-1.24.1/releases/0_14_1.md b/versioned_docs/version-1.24.1/releases/0_14_1.md new file mode 100644 index 0000000..de94c30 --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/0_14_1.md @@ -0,0 +1,10 @@ +--- +title: 0.14.1 +sidebar_position: 9977 +--- + +# 0.14.1 - 2022-09-07 + +### Fixed +* Fix Spark integration issues including error when no `openlineage.timeout` [`#1069`](https://github.com/OpenLineage/OpenLineage/pull/1069) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *`OpenlineageSparkListener` was failing when no `openlineage.timeout` was provided.* \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/releases/0_15_1.md b/versioned_docs/version-1.24.1/releases/0_15_1.md new file mode 100644 index 0000000..e80ecdb --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/0_15_1.md @@ -0,0 +1,36 @@ +--- +title: 0.15.1 +sidebar_position: 9976 +--- + +# 0.15.1 - 2022-10-05 + +### Added +* Airflow: improve development experience [`#1101`](https://github.com/OpenLineage/OpenLineage/pull/1101) [@JDarDagran](https://github.com/JDarDagran) + *Adds an interactive development environment to the Airflow integration and improves integration testing.* +* Spark: add description for URL parameters in readme, change `overwriteName` to `appName` [`#1130`](https://github.com/OpenLineage/OpenLineage/pull/1130) [@tnazarew](https://github.com/tnazarew) + *Adds more information about passing arguments with `spark.openlineage.url` and changes `overwriteName` to `appName` for clarity.* +* Documentation: update issue templates for proposal & add new integration template [`#1116`](https://github.com/OpenLineage/OpenLineage/pull/1116) [@rossturk](https://github.com/rossturk) + *Adds a YAML issue template for new integrations and fixes a bug in the proposal template.* + +### Changed +* Airflow: lazy load BigQuery client [`#1119`](https://github.com/OpenLineage/OpenLineage/pull/1119) [@mobuchowski](https://github.com/mobuchowski) + *Moves import of the BigQuery client from top level to local level to decrease DAG import time.* + +### Fixed +* Airflow: fix UUID generation conflict for Airflow DAGs with same name [`#1056`](https://github.com/OpenLineage/OpenLineage/pull/1056) [@collado-mike](https://github.com/collado-mike) + *Adds a namespace to the UUID calculation to avoid conflicts caused by DAGs having the same name in different namespaces in Airflow deployments.* +* Spark/BigQuery: fix issue with spark-bigquery-connector >=0.25.0 [`#1111`](https://github.com/OpenLineage/OpenLineage/pull/1111) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Makes the Spark integration compatible with the latest connector.* +* Spark: fix column lineage [`#1069`](https://github.com/OpenLineage/OpenLineage/pull/1069) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Fixes a null pointer exception error and an error when `openlineage.timeout` is not provided.* +* Spark: set log level of `Init OpenLineageContext` to DEBUG [`#1064`](https://github.com/OpenLineage/OpenLineage/pull/1064) [@varuntestaz](https://github.com/varuntestaz) + *Prevents sensitive information from being logged unless debug mode is used.* +* Java client: update version of SnakeYAML [`#1090`](https://github.com/OpenLineage/OpenLineage/pull/1090) [@TheSpeedding](https://github.com/TheSpeedding) + *Bumps the SnakeYAML library version to include a key bug fix.* +* dbt: remove requirement for `OPENLINEAGE_URL` to be set [`#1107`](https://github.com/OpenLineage/OpenLineage/pull/1107) [@mobuchowski](https://github.com/mobuchowski) + *Removes erroneous check for `OPENLINEAGE_URL` in the dbt integration.* +* Python client: remove potentially cyclic import [`#1126`](https://github.com/OpenLineage/OpenLineage/pull/1126) [@mobuchowski](https://github.com/mobuchowski) + *Hides imports to remove potentially cyclic import.* +* CI: build macos release package on medium resource class [`#1131`](https://github.com/OpenLineage/OpenLineage/pull/1131) [@mobuchowski](https://github.com/mobuchowski) + *Fixes failing build due to resource class being too large.* \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/releases/0_16_1.md b/versioned_docs/version-1.24.1/releases/0_16_1.md new file mode 100644 index 0000000..3fb5ea3 --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/0_16_1.md @@ -0,0 +1,40 @@ +--- +title: 0.16.1 +sidebar_position: 9975 +--- + +# 0.16.1 - 2022-11-03 + +### Added +* Airflow: add `dag_run` information to Airflow version run facet [`#1133`](https://github.com/OpenLineage/OpenLineage/pull/1133) [@fm100](https://github.com/fm100) + *Adds the Airflow DAG run ID to the `taskInfo` facet, making this additional information available to the integration.* +* Airflow: add `LoggingMixin` to extractors [`#1149`](https://github.com/OpenLineage/OpenLineage/pull/1149) [@JDarDagran](https://github.com/JDarDagran) + *Adds a `LoggingMixin` class to the custom extractor to make the output consistent with general Airflow and OpenLineage logging settings.* +* Airflow: add default extractor [`#1162`](https://github.com/OpenLineage/OpenLineage/pull/1162) [@mobuchowski](https://github.com/mobuchowski) + *Adds a `DefaultExtractor` to support the default implementation of OpenLineage for external operators without the need for custom extractors.* +* Airflow: add `on_complete` argument in `DefaultExtractor` [`#1188`](https://github.com/OpenLineage/OpenLineage/pull/1188) [@JDarDagran](https://github.com/JDarDagran) + *Adds support for running another method on `extract_on_complete`.* +* SQL: reorganize the library into multiple packages [`#1167`](https://github.com/OpenLineage/OpenLineage/pull/1167) [@StarostaGit](https://github.com/StarostaGit) [@mobuchowski](https://github.com/mobuchowski) + *Splits the SQL library into a Rust implementation and foreign language bindings, easing the process of adding language interfaces. Also contains CI fix.* + +### Changed +* Airflow: move `get_connection_uri` as extractor's classmethod [`#1169`](https://github.com/OpenLineage/OpenLineage/pull/1169) [@JDarDagran](https://github.com/JDarDagran) + *The `get_connection_uri` method allowed for too many params, resulting in unnecessarily long URIs. This changes the logic to whitelisting per extractor.* +* Airflow: change `get_openlineage_facets_on_start/complete` behavior [`#1201`](https://github.com/OpenLineage/OpenLineage/pull/1201) [@JDarDagran](https://github.com/JDarDagran) + *Splits up the method for greater legibility and easier maintenance.* + +### Fixed +* Airflow: always send SQL in `SqlJobFacet` as a string [`#1143`](https://github.com/OpenLineage/OpenLineage/pull/1143) [@mobuchowski](https://github.com/mobuchowski) + *Changes the data type of `query` from array to string to an fix error in the `RedshiftSQLOperator`.* +* Airflow: include `__extra__` case when filtering URI query params [`#1144`](https://github.com/OpenLineage/OpenLineage/pull/1144) [@JDarDagran](https://github.com/JDarDagran) + *Includes the `conn.EXTRA_KEY` in the `get_connection_uri` method to avoid exposing secrets in URIs via the `__extra__` key.* +* Airflow: enforce column casing in `SQLCheckExtractor`s [`#1159`](https://github.com/OpenLineage/OpenLineage/pull/1159) [@denimalpaca](https://github.com/denimalpaca) + *Uses the parent extractor's `_is_uppercase_names` property to determine if the column should be upper cased in the `SQLColumnCheckExtractor`'s `_get_input_facets()` method.* +* Spark: prevent exception when no schema provided [`#1180`](https://github.com/OpenLineage/OpenLineage/pull/1180) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Prevents evaluation of column lineage when the `schemaFacet` is `null`.* +* Great Expectations: add V3 API compatibility [`#1194`](https://github.com/OpenLineage/OpenLineage/pull/1194) [@denimalpaca](https://github.com/denimalpaca) + *Fixes the Pandas datasource to make it V3 API-compatible.* + +### Removed +* Airflow: remove support for Airflow 1.10 [`#1128`](https://github.com/OpenLineage/OpenLineage/pull/1128) [@mobuchowski](https://github.com/mobuchowski) + *Removes the code structures and tests enabling support for Airflow 1.10.* \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/releases/0_17_0.md b/versioned_docs/version-1.24.1/releases/0_17_0.md new file mode 100644 index 0000000..e614c09 --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/0_17_0.md @@ -0,0 +1,48 @@ +--- +title: 0.17.0 +sidebar_position: 9974 +--- + +# 0.17.0 - 2022-11-16 + +### Added +* Spark: support latest Spark 3.3.1 [`#1183`](https://github.com/OpenLineage/OpenLineage/pull/1183) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Adds support for the latest version of Spark.* +* Spark: add Kinesis Transport and support config Kinesis in Spark integration [`#1200`](https://github.com/OpenLineage/OpenLineage/pull/1200) [@yogayang](https://github.com/yogyang) + *Adds support for sending to Kinesis from the Spark integration.* +* Spark: Disable specified facets [`#1271`](https://github.com/OpenLineage/OpenLineage/pull/1271) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Adds the ability to disable specified facets from generated OpenLineage events.* +* Python: add facets implementation to Python client [`#1233`](https://github.com/OpenLineage/OpenLineage/pull/1233) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Adds missing facets to the Python client.* +* SQL: add Rust parser interface [`#1172`](https://github.com/OpenLineage/OpenLineage/pull/1172) [@StarostaGit](https://github.com/StarostaGit) [@mobuchowski](https://github.com/mobuchowski) + *Implements a Java interface in the Rust SQL parser, including a build script, native library loading mechanism, CI support and build fixes.* +* Proxy: add helm chart for the proxy backed [`#1068`](https://github.com/OpenLineage/OpenLineage/pull/1068) [@wslulciuc](https://github.com/wslulciuc) + *Adds a helm chart for deploying the proxy backend on Kubernetes.* +* Spec: include possible facets usage in spec [`#1249`](https://github.com/OpenLineage/OpenLineage/pull/1249) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Extends the `facets` definition with a list of available facets.* +* Website: publish YML version of spec to website [`#1300`](https://github.com/OpenLineage/OpenLineage/pull/1300) [@rossturk](https://github.com/rossturk) + *Adds configuration necessary to make the OpenLineage website auto-generate openAPI docs when the spec is published there.* +* Docs: update language on nominating new committers [`#1270`](https://github.com/OpenLineage/OpenLineage/pull/1270) [@rossturk](https://github.com/rossturk) + *Updates the governance language to reflect the new policy on nominating committers.* + +### Changed +* Website: publish spec into new website repo location [`#1295`](https://github.com/OpenLineage/OpenLineage/pull/1295) [@rossturk](https://github.com/rossturk) + *Creates a new deploy key, adds it to CircleCI & GitHub, and makes the necessary changes to the `release.sh` script.* +* Airflow: change how pip installs packages in tox environments [`#1302`](https://github.com/OpenLineage/OpenLineage/pull/1302) [@JDarDagran](https://github.com/JDarDagran) + *Use deprecated resolver and constraints files provided by Airflow to avoid potential issues caused by pip's new resolver.* + +### Fixed +* Airflow: fix README for running integration test [`#1238`](https://github.com/OpenLineage/OpenLineage/pull/1238) [@sekikn](https://github.com/sekikn) + *Updates the README for consistency with supported Airflow versions.* +* Airflow: add `task_instance` argument to `get_openlineage_facets_on_complete` [`#1269`](https://github.com/OpenLineage/OpenLineage/pull/1269) [@JDarDagran](https://github.com/JDarDagran) + *Adds the `task_instance` argument to `DefaultExtractor`.* +* Java client: fix up all artifactory paths [`#1290`](https://github.com/OpenLineage/OpenLineage/pull/1290) [@harels](https://github.com/harels) + *Not all artifactory paths were changed in the build CI script in a previous PR.* +* Python client: fix Mypy errors and adjust to PEP 484 [`#1264`](https://github.com/OpenLineage/OpenLineage/pull/1264) [@JDarDagran](https://github.com/JDarDagran) + *Adds a `--no-namespace-packages` argument to the Mypy command and adjusts code to PEP 484.* +* Website: release all specs since `last_spec_commit_id`, not just HEAD~1 [`#1298`](https://github.com/OpenLineage/OpenLineage/pull/1298) [@rossturk](https://github.com/rossturk) + *The script now ships all specs that have changed since `.last_spec_commit_id`.* + +### Removed +* Deprecate HttpTransport.Builder in favor of HttpConfig [`#1287`](https://github.com/OpenLineage/OpenLineage/pull/1287) [@collado-mike](https://github.com/collado-mike) + *Deprecates the Builder in favor of HttpConfig only and replaces the existing Builder implementation by delegating to the HttpConfig.* \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/releases/0_18_0.md b/versioned_docs/version-1.24.1/releases/0_18_0.md new file mode 100644 index 0000000..194faae --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/0_18_0.md @@ -0,0 +1,30 @@ +--- +title: 0.18.0 +sidebar_position: 9973 +--- + +# 0.18.0 - 2022-12-08 + +### Added +* Airflow: support `SQLExecuteQueryOperator` [`#1379`](https://github.com/OpenLineage/OpenLineage/pull/1379) [@JDarDagran](https://github.com/JDarDagran) + *Changes the `SQLExtractor` and adds support for the dynamic assignment of extractors based on `conn_type`.* +* Airflow: introduce a new extractor for `SFTPOperator` [`#1263`](https://github.com/OpenLineage/OpenLineage/pull/1263) [@sekikn](https://github.com/sekikn) + *Adds an extractor for tracing file transfers between local file systems.* +* Airflow: add Sagemaker extractors [`#1136`](https://github.com/OpenLineage/OpenLineage/pull/1136) [@fhoda](https://github.com/fhoda) + *Creates extractors for `SagemakeProcessingOperator` and `SagemakerTransformOperator`.* +* Airflow: add S3 extractor for Airflow operators [`#1166`](https://github.com/OpenLineage/OpenLineage/pull/1166) [@fhoda](https://github.com/fhoda) + *Creates an extractor for the `S3CopyObject` in the Airflow integration.* +* Spec: add spec file for `ExternalQueryRunFacet` [`#1262`](https://github.com/OpenLineage/OpenLineage/pull/1262) [@howardyoo](https://github.com/howardyoo) + *Adds a spec file to make this facet available for the Java client. Includes a README.* +* Docs: add a TSC doc [`#1303`](https://github.com/OpenLineage/OpenLineage/pull/1303) [@merobi-hub](https://github.com/merobi-hub) + *Adds a document listing the members of the Technical Steering Committee.* + +### Fixed +* Spark: improve Databricks to send better events [`#1330`](https://github.com/OpenLineage/OpenLineage/pull/1330) [@pawel-big-lebowski](https://github.com/@pawel-big-lebowski) + *Filters unwanted events and provides a meaningful job name.* +* Spark-Bigquery: fix a few of the common errors [`#1377`](https://github.com/OpenLineage/OpenLineage/pull/1377) [@mobuchowski](https://github.com/mobuchowski) + *Fixes a few of the common issues with the Spark-Bigquery integration and adds an integration test and configures CI.* +* Python: validate `eventTime` field in Python client [`#1355`](https://github.com/OpenLineage/OpenLineage/pull/1355) [@pawel-big-lebowski](https://github.com/@pawel-big-lebowski) + *Validates the `eventTime` of a `RunEvent` within the client library.* +* Databricks: Handle Databricks Runtime 11.3 changes to `DbFsUtils` constructor [`#1351`](https://github.com/OpenLineage/OpenLineage/pull/1351) [@wjohnson](https://github.com/@wjohnson) + *Recaptures lost mount point information from the `DatabricksEnvironmentFacetBuilder` and environment-properties facet by looking at the number of parameters in the `DbFsUtils` constructor to determine the runtime version.* \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/releases/0_19_2.md b/versioned_docs/version-1.24.1/releases/0_19_2.md new file mode 100644 index 0000000..d0258e0 --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/0_19_2.md @@ -0,0 +1,36 @@ +--- +title: 0.19.2 +sidebar_position: 9971 +--- + +# 0.19.2 - 2023-01-04 + +### Added +* Airflow: add Trino extractor [`#1288`](https://github.com/OpenLineage/OpenLineage/pull/1288) [@sekikn](https://github.com/sekikn) + *Adds a Trino extractor to the Airflow integration.* +* Airflow: add `S3FileTransformOperator` extractor [`#1450`](https://github.com/OpenLineage/OpenLineage/pull/1450) [@sekikn](https://github.com/sekikn) + *Adds an `S3FileTransformOperator` extractor to the Airflow integration.* +* Airflow: add standardized run facet [`#1413`](https://github.com/OpenLineage/OpenLineage/pull/1413) [@JDarDagran](https://github.com/JDarDagran) + *Creates one standardized run facet for the Airflow integration.* +* Airflow: add `NominalTimeRunFacet` and `OwnershipJobFacet` [`#1410`](https://github.com/OpenLineage/OpenLineage/pull/1410) [@JDarDagran](https://github.com/JDarDagran) + *Adds `nominalEndTime` and `OwnershipJobFacet` fields to the Airflow integration.* +* dbt: add support for postgres datasources [`#1417`](https://github.com/OpenLineage/OpenLineage/pull/1417) [@julienledem](https://github.com/julienledem) + *Adds the previously unsupported postgres datasource type.* +* Proxy: add client-side proxy (skeletal version) [`#1439`](https://github.com/OpenLineage/OpenLineage/pull/1439) [`#1420`](https://github.com/OpenLineage/OpenLineage/pull/1420) [@fm100](https://github.com/fm100) + *Implements a skeletal version of a client-side proxy.* +* Proxy: add CI job to publish Docker image [`#1086`](https://github.com/OpenLineage/OpenLineage/pull/1086) [@wslulciuc](https://github.com/wslulciuc) + *Includes a script to build and tag the image plus jobs to verify the build on every CI run and publish to Docker Hub.* +* SQL: add `ExtractionErrorRunFacet` [`#1442`](https://github.com/OpenLineage/OpenLineage/pull/1442) [@mobuchowski](https://github.com/mobuchowski) + *Adds a facet to the spec to reflect internal processing errors, especially failed or incomplete parsing of SQL jobs.* +* SQL: add column-level lineage to SQL parser [`#1432`](https://github.com/OpenLineage/OpenLineage/pull/1432) [`#1461`](https://github.com/OpenLineage/OpenLineage/pull/1461) [@mobuchowski](https://github.com/mobuchowski) [@StarostaGit](https://github.com/StarostaGit) + *Adds support for extracting column-level lineage from SQL statements in the parser, including adjustments to Rust-Python and Rust-Java interfaces and the Airflow integration's SQL extractor to make use of the feature. Also includes more tests, removal of the old parser, and removal of the common-build cache in CI (which was breaking the parser).* +* Spark: pass config parameters to the OL client [`#1383`](https://github.com/OpenLineage/OpenLineage/pull/1383) [@tnazarew](https://github.com/tnazarew) + *Adds a mechanism for making new lineage consumers transparent to the integration, easing the process of setting up new types of consumers.* + +### Fixed +* Airflow: fix `collect_ignore`, add flags to Pytest for cleaner output [`#1437`](https://github.com/OpenLineage/OpenLineage/pull/1437) [@JDarDagran](https://github.com/JDarDagran) + *Removes the `extractors` directory from the ignored list, improving unit testing.* +* Spark & Java client: fix README typos [@versaurabh](https://github.com/versaurabh) + *Fixes typos in the SPDX license headers.* + + diff --git a/versioned_docs/version-1.24.1/releases/0_1_0.md b/versioned_docs/version-1.24.1/releases/0_1_0.md new file mode 100644 index 0000000..3af0f4a --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/0_1_0.md @@ -0,0 +1,15 @@ +--- +title: 0.1.0 +sidebar_position: 10000 +--- + +# 0.1.0 - 2021-08-13 + +OpenLineage is an _Open Standard_ for lineage metadata collection designed to record metadata for a job in execution. The initial public release includes: + +* **An initial specification.** The the initial version [`1-0-0`](https://github.com/OpenLineage/OpenLineage/blob/0.1.0/spec/OpenLineage.md) of the OpenLineage specification defines the core model and facets. +* **Integrations** that collect lineage metadata as OpenLineage events: + * [`Apache Airflow`](https://github.com/OpenLineage/OpenLineage/tree/main/integration/airflow) with support for BigQuery, Great Expectations, Postgres, Redshift, Snowflake + * [`Apache Spark`](https://github.com/OpenLineage/OpenLineage/tree/main/integration/spark) + * [`dbt`](https://github.com/OpenLineage/OpenLineage/tree/main/integration/dbt) +* **Clients** that send OpenLineage events to an HTTP backend. Both [`java`](https://github.com/OpenLineage/OpenLineage/tree/main/client/java) and [`python`](https://github.com/OpenLineage/OpenLineage/tree/main/client/python) are initially supported. diff --git a/versioned_docs/version-1.24.1/releases/0_20_4.md b/versioned_docs/version-1.24.1/releases/0_20_4.md new file mode 100644 index 0000000..d2811f3 --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/0_20_4.md @@ -0,0 +1,38 @@ +--- +title: 0.20.4 +sidebar_position: 9970 +--- + +# 0.20.4 - 2023-02-07 + +### Added +* Airflow: add new extractor for `GCSToGCSOperator` [`#1495`](https://github.com/OpenLineage/OpenLineage/pull/1495) [@sekikn](https://github.com/sekikn) + *Adds a new extractor for this operator.* +* Flink: resolve topic names from regex, support 1.16.0 [`#1522`](https://github.com/OpenLineage/OpenLineage/pull/1522) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Adds support for Flink 1.16.0 and makes the integration resolve topic names from Kafka topic patterns.* +* Proxy: implement lineage event validator for client proxy [`#1469`](https://github.com/OpenLineage/OpenLineage/pull/1469) [@fm100](https://github.com/fm100) + *Implements logic in the proxy (which is still in development) for validating and handling lineage events.* + +### Changed +* CI: use `ruff` instead of flake8, isort, etc., for linting and formatting [`#1526`](https://github.com/OpenLineage/OpenLineage/pull/1526) [@mobuchowski](https://github.com/mobuchowski) + *Adopts the `ruff` package, which combines several linters and formatters into one fast binary.* + +### Fixed +* Airflow: make the Trino catalog non-mandatory [`#1572`](https://github.com/OpenLineage/OpenLineage/pull/1572) [@JDarDagran](https://github.com/JDarDagran) + *Makes the Trino catalog optional in the Trino extractor.* +* Common: add explicit SQL dependency [`#1532`](https://github.com/OpenLineage/OpenLineage/pull/1532) [@mobuchowski](https://github.com/mobuchowski) + *Addresses a 0.19.2 breaking change to the GE integration by including the SQL dependency explicitly.* +* DBT: adjust `tqdm` logging in `dbt-ol` [`#1549`](https://github.com/OpenLineage/OpenLineage/pull/1549) [@JdarDagran](https://github.com/JDarDagran) + *Adjusts `tqdm` to show the correct number of iterations and adds START events for parent runs.* +* DBT: fix typo in log output [`#1493`](https://github.com/OpenLineage/OpenLineage/pull/1493) [@denimalpaca](https://github.com/denimalpaca) + *Fixes 'emittled' typo in log output.* +* Great Expectations/Airflow: follow Snowflake dataset naming rules [`#1527`](https://github.com/OpenLineage/OpenLineage/pull/1527) [@mobuchowski](https://github.com/mobuchowski) + *Normalizes Snowflake dataset and datasource naming rules among DBT/Airflow/GE; canonizes old Snowflake account paths around making them all full-size with account, region and cloud names.* +* Java and Python Clients: Kafka does not initialize properties if they are empty; check and notify about Confluent-Kafka requirement [`#1556`](https://github.com/OpenLineage/OpenLineage/pull/1556) [@mobuchowski](https://github.com/mobuchowski) + *Fixes the failure to initialize `KafkaTransport` in the Java client and adds an exception if the required `confluent-kafka` module is missing from the Python client.* +* Spark: add square brackets for list-based Spark configs [`#1507`](https://github.com/OpenLineage/OpenLineage/pull/1507) [@Varunvaruns9](https://github.com/Varunvaruns9) + *Adds a condition to treat configs with `[]` as lists. Note: `[]` will be required for list-based configs starting with 0.21.0.* +* Spark: fix several Spark/BigQuery-related issues [`#1557`](https://github.com/OpenLineage/OpenLineage/pull/1557) [@mobuchowski](https://github.com/mobuchowski) + *Fixes the assumption that a version is always a number; adds support for `HadoopMapReduceWriteConfigUtil`; makes the integration access `BigQueryUtil` and `getTableId` using reflection, which supports all BigQuery versions; makes logs provide the full serialized LogicalPlan on `debug`.* +* SQL: only report partial failures [`#1479](https://github.com/OpenLineage/OpenLineage/pull/1479) [@mobuchowski](https://github.com/mobuchowski) + *Changes the parser so it reports partial failures instead of failing the whole extraction.* \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/releases/0_20_6.md b/versioned_docs/version-1.24.1/releases/0_20_6.md new file mode 100644 index 0000000..106404d --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/0_20_6.md @@ -0,0 +1,20 @@ +--- +title: 0.20.6 +sidebar_position: 9969 +--- + +# 0.20.6 - 2023-02-10 + +### Added +* Airflow: add new extractor for `FTPFileTransmitOperator` [`#1603`](https://github.com/OpenLineage/OpenLineage/pull/1601) [@sekikn](https://github.com/sekikn) + *Adds a new extractor for this Airflow operator serving legacy systems.* + +### Changed +* Airflow: make extractors for async operators work [`#1601`](https://github.com/OpenLineage/OpenLineage/pull/1601) [@JDarDagran](https://github.com/JDarDagran) + *Sends a deterministic Run UUID for Airflow runs.* + +### Fixed +* dbt: render actual profile only in profiles.yml [`#1599`](https://github.com/OpenLineage/OpenLineage/pull/1599) [@mobuchowski](https://github.com/mobuchowski) + *Adds an `include_section` argument for the Jinja render method to include only one profile if needed.* +* dbt: make `compiled_code` optional [`#1595`](https://github.com/OpenLineage/OpenLineage/pull/1595) [@JDarDagran](https://github.com/JDarDagran) + *Makes `compiled_code` optional for manifest > v7.* \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/releases/0_21_1.md b/versioned_docs/version-1.24.1/releases/0_21_1.md new file mode 100644 index 0000000..2f1a128 --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/0_21_1.md @@ -0,0 +1,44 @@ +--- +title: 0.21.1 +sidebar_position: 9968 +--- + +# 0.21.1 - 2023-03-02 + +### Added +* **Clients: add `DEBUG` logging of events to transports** [`#1633`](https://github.com/OpenLineage/OpenLineage/pull/1633) [@mobuchowski](https://github.com/mobuchowski) + *Ensures that the `DEBUG` loglevel on properly configured loggers will always log events, regardless of the chosen transport.* +* **Spark: add `CustomEnvironmentFacetBuilder` class** [`#1545`](https://github.com/OpenLineage/OpenLineage/pull/1545) ***New contributor*** [@Anirudh181001](https://github.com/Anirudh181001) + *Enables the capture of custom environment variables from Spark.* +* **Spark: introduce the new output visitors `AlterTableAddPartitionCommandVisitor` and `AlterTableSetLocationCommandVisitor`** [`#1629`](https://github.com/OpenLineage/OpenLineage/pull/1629) ***New contributor*** [@nataliezeller1](https://github.com/nataliezeller1) + *Adds visitors for extracting table names from the Spark commands `AlterTableAddPartitionCommand` and `AlterTableSetLocationCommand`. The intended use case is a custom transport for the OpenMetadata lineage API.* +* **Spark: add column lineage for JDBC relations** [`#1636`](https://github.com/OpenLineage/OpenLineage/pull/1636) [@tnazarew](https://github.com/tnazarew) + *Adds column lineage information to JDBC events with data extracted from query by the SQL parser.* +* **SQL: add linux-aarch64 native library to Java SQL parser** [`#1664`](https://github.com/OpenLineage/OpenLineage/pull/1664) [@mobuchowski](https://github.com/mobuchowski) + *Adds a Linux-ARM version of the native library. The Java SQL parser interface had only Linux-x64 and MacOS universal binary variants previously.* + +### Changed +* **Airflow: get table database in Athena extractor** [`#1631`](https://github.com/OpenLineage/OpenLineage/pull/1631) ***New contributor*** [@rinzool](https://github.com/rinzool) + *Changes the extractor to get a table's database from the `table.schema` field or the operator default if the field is `None`.* + +### Fixed +* **dbt: add dbt `seed` to the list of dbt-ol events** [`#1649`](https://github.com/OpenLineage/OpenLineage/pull/1649) ***New contributor*** [@pohek321](https://github.com/pohek321) + *Ensures that `dbt-ol test` no longer fails when run against an event seed.* +* **Spark: make column lineage extraction in Spark support caching** [`#1634`](https://github.com/OpenLineage/OpenLineage/pull/1634) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Collect column lineage from Spark logical plans that contain cached datasets.* +* **Spark: add support for a deprecated config** [`#1586`](https://github.com/OpenLineage/OpenLineage/pull/1586) [@tnazarew](https://github.com/tnazarew) + *Maps the deprecated `spark.openlineage.url` to `spark.openlineage.transport.url`.* +* **Spark: add error message in case of null in url** [`#1590`](https://github.com/OpenLineage/OpenLineage/pull/1590) [@tnazarew](https://github.com/tnazarew) + *Improves error logging in the case of undefined URLs.* +* **Spark: collect complete event for really quick Spark jobs** [`#1650`](https://github.com/OpenLineage/OpenLineage/pull/1650) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Improves the collecting of OpenLineage events on SQL complete in the case of quick operations.* +* **Spark: fix input/outputs for one node `LogicalRelation` plans** [`#1668`](https://github.com/OpenLineage/OpenLineage/pull/1668) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *For simple queries like `select col1, col2 from my_db.my_table` that do not write output, + the Spark plan contained just a single node, which was wrongly treated as both + an input and output dataset.* +* **SQL: fix file existence check in build script for openlineage-sql-java** [`#1613`](https://github.com/OpenLineage/OpenLineage/pull/1613) [@sekikn](https://github.com/sekikn) + *Ensures that the build script works if the library is compiled solely for Linux.* + +### Removed +* **Airflow: remove `JobIdMapping` and update macros to better support Airflow version 2+** [`#1645`](https://github.com/OpenLineage/OpenLineage/pull/1645) [@JDarDagran](https://github.com/JDarDagran) + *Updates macros to use `OpenLineageAdapter`'s method to generate deterministic run UUIDs because using the `JobIdMapping` utility is incompatible with Airflow 2+.* diff --git a/versioned_docs/version-1.24.1/releases/0_22_0.md b/versioned_docs/version-1.24.1/releases/0_22_0.md new file mode 100644 index 0000000..5282464 --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/0_22_0.md @@ -0,0 +1,36 @@ +--- +title: 0.22.0 +sidebar_position: 9967 +--- + +# 0.22.0 - 2023-04-03 + +### Added +* **Spark: properties facet** [`#1717`](https://github.com/OpenLineage/OpenLineage/pull/1717) [@tnazarew](https://github.com/tnazarew) + *Adds a new facet to capture specified Spark properties.* +* **SQL: SQLParser supports `alter`, `truncate` and `drop` statements** [`#1695`](https://github.com/OpenLineage/OpenLineage/pull/1695) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Adds support for the statements to the parser.* +* **Common/SQL: provide public interface for openlineage_sql package** [`#1727`](https://github.com/OpenLineage/OpenLineage/pull/1727) [@JDarDagran](https://github.com/JDarDagran) + *Provides a `.pyi` public interface file for providing typing hints.* +* **Java client: add configurable headers to HTTP transport** [`#1718`](https://github.com/OpenLineage/OpenLineage/pull/1718) [@tnazarew](https://github.com/tnazarew) + *Adds custom header handling to `HttpTransport` and the Spark integration.* +* **Python client: create client from dictionary** [`#1745`](https://github.com/OpenLineage/OpenLineage/pull/1745) [@JDarDagran](https://github.com/JDarDagran) + *Adds a new `from_dict` method to the Python client to support creating it from a dictionary.* + +### Changed +* **Spark: remove URL parameters for JDBC namespaces** [`#1708`](https://github.com/OpenLineage/OpenLineage/pull/1708) [@tnazarew](https://github.com/tnazarew) + *Makes the namespace value from an event conform to the naming convention specified in* [Naming.md](https://github.com/OpenLineage/OpenLineage/blob/main/spec/Naming.md). +* **Make `OPENLINEAGE_DISABLED` case-insensitive** [`#1705`](https://github.com/OpenLineage/OpenLineage/pull/1705) [@jedcunningham](https://github.com/jedcunningham) + *Makes the environment variable for disabling OpenLineage in the Python client and Airflow integration case-insensitive.* + +### Fixed +* **Spark: fix missing BigQuery class in column lineage** [`#1698`](https://github.com/OpenLineage/OpenLineage/pull/1698) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *The Spark integration now checks if the BigQuery classes are available on the classpath before attempting to use them.* +* **DBT: throw `UnsupportedDbtCommand` when finding unsupported entry in `args.which`** [`#1724`](https://github.com/OpenLineage/OpenLineage/pull/1724) [@JDarDagran](https://github.com/JDarDagran) + *Adjusts the `dbt-ol` script to detect DBT commands in `run_results.json` only.* + +### Removed +* **Spark: remove unnecessary warnings for column lineage** [`#1700`](https://github.com/OpenLineage/OpenLineage/pull/1700) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Removes the warnings about `OneRowRelation` and `LocalRelation` nodes.* +* **Spark: remove deprecated configs** [`#1711`](https://github.com/OpenLineage/OpenLineage/pull/1711) [@tnazarew](https://github.com/tnazarew) + *Removes support for deprecated configs.* \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/releases/0_23_0.md b/versioned_docs/version-1.24.1/releases/0_23_0.md new file mode 100644 index 0000000..b465319 --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/0_23_0.md @@ -0,0 +1,28 @@ +--- +title: 0.23.0 +sidebar_position: 9966 +--- + +# 0.23.0 - 2023-04-20 + +### Added +* **SQL: parser improvements to support: `copy into`, `create stage`, `pivot`** [`#1742`](https://github.com/OpenLineage/OpenLineage/pull/1742) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Adds support for additional syntax available in sqlparser-rs.* +* **dbt: add support for snapshots** [`#1787`](https://github.com/OpenLineage/OpenLineage/pull/1787) [@JDarDagran](https://github.com/JDarDagran) + *Adds support for this special kind of table representing type-2 Slowly Changing Dimensions.* + +### Changed +* **Spark: change custom column lineage visitors** [`#1788`](https://github.com/OpenLineage/OpenLineage/pull/1788) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Makes the `CustomColumnLineageVisitor` interface public to support custom column lineage.* + +### Fixed +* **Spark: fix null pointer in `JobMetricsHolder`** [`#1786`](https://github.com/OpenLineage/OpenLineage/pull/1786) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Adds a null check before running `put` to fix a NPE occurring in `JobMetricsHolder`* +* **SQL: fix query with table generator** [`#1783`](https://github.com/OpenLineage/OpenLineage/pull/1783) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Allows `TableFactor::TableFunction` to support queries containing table functions.* +* **SQL: fix rust code style bug** [`#1785`](https://github.com/OpenLineage/OpenLineage/pull/1785) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Fixes a minor style issue in `visitor.rs`.* + +### Removed +* **Airflow: Remove explicit `pass` from several `extract_on_complete` methods** [`#1771`](https://github.com/OpenLineage/OpenLineage/pull/1771) [@JDarDagran](https://github.com/JDarDagran) + *Removes the code from three extractors.* \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/releases/0_24_0.md b/versioned_docs/version-1.24.1/releases/0_24_0.md new file mode 100644 index 0000000..8540a65 --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/0_24_0.md @@ -0,0 +1,22 @@ +--- +title: 0.24.0 +sidebar_position: 9965 +--- + +# 0.24.0 - 2023-05-03 + +### Added +* **Support custom transport types** [`#1795`](https://github.com/OpenLineage/OpenLineage/pull/1795) [@nataliezeller1](https://github.com/nataliezeller1) + *Adds a new interface, `TransportBuilder`, for creating custom transport types without having to modify core components of OpenLineage.* +* **Airflow: dbt Cloud integration** [`#1418`](https://github.com/OpenLineage/OpenLineage/pull/1418) [@howardyoo](https://github.com/howardyoo) + *Adds a new OpenLineage extractor for dbt Cloud that uses the dbt Cloud hook provided by Airflow to communicate with dbt Cloud via its API.* +* **Spark: support dataset name modification using regex** [`#1796`](https://github.com/OpenLineage/OpenLineage/pull/1796) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *It is a common scenario to write Spark output datasets with a location path ending with `/year=2023/month=04`. The Spark parameter `spark.openlineage.dataset.removePath.pattern` introduced here allows for removing certain elements from a path with a regex pattern.* + +### Fixed +* **Spark: catch exception when trying to obtain details of non-existing table.** [`#1798`](https://github.com/OpenLineage/OpenLineage/pull/1798) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *This mostly happens when getting table details on START event while the table is still not created.* +* **Spark: LogicalPlanSerializer** [`#1792`](https://github.com/OpenLineage/OpenLineage/pull/1792) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Changes `LogicalPlanSerializer` to make use of non-shaded Jackson classes in order to serialize `LogicalPlans`. Note: class names are no longer serialized.* +* **Flink: fix Flink CI** [`#1801`](https://github.com/OpenLineage/OpenLineage/pull/1801) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Specifies an older image version that succeeds on CI in order to fix the Flink integration.* \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/releases/0_25_0.md b/versioned_docs/version-1.24.1/releases/0_25_0.md new file mode 100644 index 0000000..f4ce46a --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/0_25_0.md @@ -0,0 +1,20 @@ +--- +title: 0.25.0 +sidebar_position: 9964 +--- + +# 0.25.0 - 2023-05-15 + +### Added +* **Spark: add Spark/Delta `merge into` support** [`#1823`](https://github.com/OpenLineage/OpenLineage/pull/1823) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Adds support for `merge into` queries.* + +### Fixed +* **Spark: fix JDBC query handling** [`#1808`](https://github.com/OpenLineage/OpenLineage/pull/1808) [@nataliezeller1](https://github.com/nataliezeller1) + *Makes query handling more tolerant of variations in syntax and formatting.* +* **Spark: filter Delta adaptive plan events** [`#1830`](https://github.com/OpenLineage/OpenLineage/pull/1830) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Extends the `DeltaEventFilter` class to filter events in cases where rewritten queries in adaptive Spark plans generate extra events.* +* **Spark: fix Java class cast exception** [`#1844`](https://github.com/OpenLineage/OpenLineage/pull/1844) [@Anirudh181001](https://github.com/Anirudh181001) + *Fixes the error caused by the `OpenLineageRunEventBuilder` when it cast the Spark scheduler's `ShuffleMapStage` to boolean.* +* **Flink: include missing fields of Openlineage events** [`#1840`](https://github.com/OpenLineage/OpenLineage/pull/1840) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Enriches Flink events so that missing `eventTime`, `runId` and `job` elements no longer produce errors.* \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/releases/0_26_0.md b/versioned_docs/version-1.24.1/releases/0_26_0.md new file mode 100644 index 0000000..9faa898 --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/0_26_0.md @@ -0,0 +1,20 @@ +--- +title: 0.26.0 +sidebar_position: 9963 +--- + +# 0.26.0 - 2023-05-18 + +### Added +* **Proxy: Fluentd proxy support (experimental)** [`#1757`](https://github.com/OpenLineage/OpenLineage/pull/1757) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Adds a Fluentd data collector as a proxy to buffer Openlineage events and send them to multiple backends (among many other purposes). Also implements a Fluentd Openlineage parser to validate incoming HTTP events at the beginning of the pipeline. See the [readme](https://github.com/OpenLineage/OpenLineage/tree/main/proxy/fluentd) file for more details.* + +### Changed +* **Python client: use Hatchling over setuptools to orchestrate Python env setup** [`#1856`](https://github.com/OpenLineage/OpenLineage/pull/1856) [@gaborbernat](https://github.com/gaborbernat) + *Replaces setuptools with Hatchling for building the backend. Also includes a number of fixes, including to type definitions in `transport` and elsewhere.* + +### Fixed +* **Spark: support single file datasets** [`#1855`](https://github.com/OpenLineage/OpenLineage/pull/1855) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Fixes the naming of single file datasets so they are no longer named using the parent directory's path: `spark.read.csv('file.csv')`.* +* **Spark: fix `logicalPlan` serialization issue on Databricks** [`#1858`](https://github.com/OpenLineage/OpenLineage/pull/1858) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Disables the `spark_unknown` facet by default to turn off serialization of `logicalPlan`.* diff --git a/versioned_docs/version-1.24.1/releases/0_27_1.md b/versioned_docs/version-1.24.1/releases/0_27_1.md new file mode 100644 index 0000000..5d1cb83 --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/0_27_1.md @@ -0,0 +1,16 @@ +--- +title: 0.27.1 +sidebar_position: 9962 +--- + +# 0.27.1 - 2023-06-05 + +### Added +* **Python client: add emission filtering mechanism and exact, regex filters** [`#1878`](https://github.com/OpenLineage/OpenLineage/pull/1878) [@mobuchowski](https://github.com/mobuchowski) + *Adds configurable job-name filtering to the Python client. Filters can be exact-match- or regex-based. Events will not be sent in the case of matches.* + +### Fixed +* **Spark: fix column lineage for aggregate queries on databricks** [`#1867`](https://github.com/OpenLineage/OpenLineage/pull/1867) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Aggregate queries on databricks did not return column lineage.* +* **Airflow: fix unquoted `[` and `]` in Snowflake URIs** [`#1883`](https://github.com/OpenLineage/OpenLineage/pull/1883) [@JDarDagran](https://github.com/JDarDagran) + *Snowflake connections containing one of `[` or `]` were causing `urllib.parse.urlparse` to fail.* \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/releases/0_27_2.md b/versioned_docs/version-1.24.1/releases/0_27_2.md new file mode 100644 index 0000000..1c8035c --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/0_27_2.md @@ -0,0 +1,10 @@ +--- +title: 0.27.2 +sidebar_position: 9961 +--- + +# 0.27.2 - 2023-06-06 + +### Fixed +* **Python client: deprecate `client.from_environment`, do not skip loading config** [`#1908`](https://github.com/OpenLineage/OpenLineage/pull/1908) [@mobuchowski](https://github.com/mobuchowski) + *Deprecates the `OpenLineage.from_environment` method and recommends using the constructor instead.* \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/releases/0_28_0.md b/versioned_docs/version-1.24.1/releases/0_28_0.md new file mode 100644 index 0000000..ea7da0a --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/0_28_0.md @@ -0,0 +1,16 @@ +--- +title: 0.28.0 +sidebar_position: 9960 +--- + +# 0.28.0 - 2023-06-12 + +### Added +* **dbt: add Databricks compatibility** [`#1829`](https://github.com/OpenLineage/OpenLineage/pull/1829) [@Ines70](https://github.com/Ines70) + *Enables launching OpenLineage with a Databricks profile.* + +### Fixed +* **Fix type-checked marker and packaging** [`#1913`](https://github.com/OpenLineage/OpenLineage/pull/1913) [@gaborbernat](https://github.com/gaborbernat) + *The client was not marking itself as type-annotated.* +* **Python client: add `schemaURL` to run event** [`#1917`](https://github.com/OpenLineage/OpenLineage/pull/1917) [@gaborbernat](https://github.com/gaborbernat) + *Adds the missing `schemaURL` to the client's `RunState` class.* \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/releases/0_29_2.md b/versioned_docs/version-1.24.1/releases/0_29_2.md new file mode 100644 index 0000000..26b63fa --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/0_29_2.md @@ -0,0 +1,23 @@ +--- +title: 0.29.2 +sidebar_position: 9959 +--- + +# 0.29.2 - 2023-06-30 + +### Added +* **Flink: support Flink version 1.17.1** [`#1947`](https://github.com/OpenLineage/OpenLineage/pull/1947) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Support Flink versions: 1.15.4, 1.16.2 and 1.17.1.* +* **Spark: support Spark 3.4** [`#1790`](https://github.com/OpenLineage/OpenLineage/pull/1790) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Introduce support for latest Spark version 3.4.0, along with 3.2.4 and 3.3.2.* +* **Spark: add Databricks platform integration test** [`#1928`](https://github.com/OpenLineage/OpenLineage/pull/1928) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Spark integration test to verify behaviour on databricks platform to be run manually in CircleCI when needed.* +* **Spec: add static lineage event types** [`#1880`](https://github.com/OpenLineage/OpenLineage/pull/1880) @pawel-big-lebowski + *As a first step in implementing static lineage, this adds new `DatasetEvent` and `JobEvent` types to the spec, along with support for the new types in the Python client.* + +### Removed +* **Proxy: remove unused Golang client approach** [`#1926`](https://github.com/OpenLineage/OpenLineage/pull/1926) [@mobuchowski](https://github.com/mobuchowski) + *Removes the unused Golang proxy, rendered redundant by the fluentd proxy.* +* **Req: bump minimum supported Python version to 3.8** [`#1950`](https://github.com/OpenLineage/OpenLineage/pull/1950) [@mobuchowski](https://github.com/mobuchowski) + *Python 3.7 is at EOL. This bumps the minimum supported version to 3.8 to keep the project aligned with the Python EOL schedule.* + diff --git a/versioned_docs/version-1.24.1/releases/0_2_0.md b/versioned_docs/version-1.24.1/releases/0_2_0.md new file mode 100644 index 0000000..3f284fe --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/0_2_0.md @@ -0,0 +1,26 @@ +--- +title: 0.2.0 +sidebar_position: 9999 +--- + +# 0.2.0 - 2021-08-23 + +### Added + +* Parse dbt command line arguments when invoking `dbt-ol` [@mobuchowski](https://github.com/mobuchowski). For example: + + ``` + $ dbt-ol run --project-dir path/to/dir + ``` + +* Set `UnknownFacet` for spark (captures metadata about unvisited nodes from spark plan not yet supported) [@OleksandrDvornik](https://github.com/OleksandrDvornik) + +### Changed + +* Remove `model` from dbt job name [@mobuchowski](https://github.com/mobuchowski) +* Default dbt job namespace to output dataset namespace [@mobuchowski](https://github.com/mobuchowski) +* Rename `openlineage.spark.*` to `io.openlineage.spark.*` [@OleksandrDvornik](https://github.com/OleksandrDvornik) + +### Fixed + +* Remove instance references to extractors from DAG and avoid copying log property for serializability [@collado-mike](https://github.com/collado-mike) \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/releases/0_2_1.md b/versioned_docs/version-1.24.1/releases/0_2_1.md new file mode 100644 index 0000000..c82039b --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/0_2_1.md @@ -0,0 +1,10 @@ +--- +title: 0.2.1 +sidebar_position: 9998 +--- + +# 0.2.1 - 2021-08-27 + +### Fixed + +* dbt: default `--project-dir` argument to current directory in `dbt-ol` script [@mobuchowski](https://github.com/mobuchowski) \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/releases/0_2_2.md b/versioned_docs/version-1.24.1/releases/0_2_2.md new file mode 100644 index 0000000..9d19514 --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/0_2_2.md @@ -0,0 +1,14 @@ +--- +title: 0.2.2 +sidebar_position: 9997 +--- + +# 0.2.2 - 2021-09-08 + +### Added +* Implement OpenLineageValidationAction for Great Expectations [@collado-mike](https://github.com/collado-mike) +* facet: add expectations assertions facet [@mobuchowski](https://github.com/mobuchowski) + +### Fixed +* airflow: pendulum formatting fix, add tests [@mobuchowski](https://github.com/mobuchowski) +* dbt: do not emit events if run_result file was not updated [@mobuchowski](https://github.com/mobuchowski) \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/releases/0_2_3.md b/versioned_docs/version-1.24.1/releases/0_2_3.md new file mode 100644 index 0000000..d108a62 --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/0_2_3.md @@ -0,0 +1,10 @@ +--- +title: 0.2.3 +sidebar_position: 9996 +--- + +# 0.2.3 - 2021-10-07 + +### Fixed + +* dbt: add dbt `v3` manifest support [@mobuchowski](https://github.com/mobuchowski) \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/releases/0_30_1.md b/versioned_docs/version-1.24.1/releases/0_30_1.md new file mode 100644 index 0000000..fdbc491 --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/0_30_1.md @@ -0,0 +1,40 @@ +--- +title: 0.30.1 +sidebar_position: 9958 +--- + +# 0.30.1 - 2023-07-25 + +### Added +* **Flink: support Iceberg sinks** [`#1960`](https://github.com/OpenLineage/OpenLineage/pull/1960) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Detects output datasets when using an Iceberg table as a sink.* +* **Spark: column-level lineage for `merge into` on Delta tables** [`#1958`](https://github.com/OpenLineage/OpenLineage/pull/1958) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Makes column-level lineage support `merge into` on Delta tables. Also refactors column-level lineage to deal with multiple Spark versions.* +* **Spark: column-level lineage for `merge into` on Iceberg tables** [`#1971`](https://github.com/OpenLineage/OpenLineage/pull/1971) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Makes column-level lineage support `merge into` on Iceberg tables.* +* **Spark: add support for Iceberg REST catalog** [`#1963`](https://github.com/OpenLineage/OpenLineage/pull/1963) [@juancappi](https://github.com/juancappi) + *Adds `rest` to the existing options of `hive` and `hadoop` in `IcebergHandler.getDatasetIdentifier()` to add support for Iceberg's `RestCatalog`.* +* **Airflow: add possibility to force direct-execution based on environment variable** [`#1934`](https://github.com/OpenLineage/OpenLineage/pull/1934) [@mobuchowski](https://github.com/mobuchowski) + *Adds the option to use the direct-execution method on the Airflow listener when the existence of a non-SQLAlchemy-based Airflow event mechanism is confirmed. This happens when using Airflow 2.6 or when the `OPENLINEAGE_AIRFLOW_ENABLE_DIRECT_EXECUTION` environment variable exists.* +* **SQL: add support for Apple Silicon to `openlineage-sql-java`** [`#1981`](https://github.com/OpenLineage/OpenLineage/pull/1981) [@davidjgoss](https://github.com/davidjgoss) + *Expands the OS/architecture checks when compiling to produce a specific file for Apple Silicon. Also expands the corresponding OS/architecture checks when loading the binary at runtime from Java code.* +* **Spec: add facet deletion** [`#1975`](https://github.com/OpenLineage/OpenLineage/pull/1975) [@julienledem](https://github.com/julienledem) + *In order to add a mechanism for deleting job and dataset facets, adds a `{ _deleted: true }` object that can take the place of any job or dataset facet (but not run or input/output facets, which are valid only for a specific run).* +* **Client: add a file transport** [`#1891`](https://github.com/OpenLineage/OpenLineage/pull/1891) [@Alexkuva](https://github.com/Alexkuva) + *Creates a `FileTransport` and its configuration classes supporting append mode or write-new-file mode, which is especially useful when an object store does not support append mode, e.g. in the case of Databricks DBFS FUSE.* + +### Changed +* **Airflow: do not run plugin if OpenLineage provider is installed** [`#1999`](https://github.com/OpenLineage/OpenLineage/pull/1999) [@JDarDagran](https://github.com/JDarDagran) + *Sets `OPENLINEAGE_DISABLED` to `true` if the provider is installed.* +* **Python: rename `config` to `config_class`** [`#1998`](https://github.com/OpenLineage/OpenLineage/pull/1998) [@mobuchowski](https://github.com/mobuchowski) + *Renames the `config` class variable to `config_class` to avoid potential conflict with the config instance.* + +### Fixed +* **Airflow: add workaround for airflow-sqlalchemy event mechanism bug** [`#1959`](https://github.com/OpenLineage/OpenLineage/pull/1959) [@mobuchowski](https://github.com/mobuchowski) + *Due to known issues with the fork and thread model in the Airflow-SQLAlchemy-based event-delivery mechanism, a Kafka producer left alone does not emit a `COMPLETE`` event. This creates a producer for each event when we detect that we're under Airflow 2.3 - 2.5.* +* **Spark: fix custom environment variables facet** [`#1973`](https://github.com/OpenLineage/OpenLineage/pull/1973) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Enables sending the Spark environment variables facet in a non-deterministic way.* +* **Spark: filter unwanted Delta events** [`#1968`](https://github.com/OpenLineage/OpenLineage/pull/1968) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Clears events generated by logical plans having `Project` node as root.* +* **Python: allow modification of `openlineage.*` logging levels via environment variables** [`#1974`](https://github.com/OpenLineage/OpenLineage/pull/1974) [@JDarDagran](https://github.com/JDarDagran) + *Adds `OPENLINEAGE_{CLIENT/AIRFLOW/DBT}_LOGGING` environment variables that can be set according to module logging levels and cleans up some logging calls in `openlineage-airflow`.* \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/releases/0_3_0.md b/versioned_docs/version-1.24.1/releases/0_3_0.md new file mode 100644 index 0000000..15b2c97 --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/0_3_0.md @@ -0,0 +1,19 @@ +--- +title: 0.3.0 +sidebar_position: 9995 +--- + +# 0.3.0 - 2021-12-03 + +### Added +* Spark3 support [@OleksandrDvornik](https://github.com/OleksandrDvornik) / [@collado-mike](https://github.com/collado-mike) +* LineageBackend for Airflow 2 [@mobuchowski](https://github.com/mobuchowski) +* Adding custom spark version facet to spark integration [@OleksandrDvornik](https://github.com/OleksandrDvornik) +* Adding dbt version facet [@mobuchowski](https://github.com/mobuchowski) +* Added support for Redshift profile [@AlessandroLollo](https://github.com/AlessandroLollo) + +### Fixed + +* Sanitize JDBC URLs [@OleksandrDvornik](https://github.com/OleksandrDvornik) +* strip openlineage url in python client [@OleksandrDvornik](https://github.com/OleksandrDvornik) +* deploy spec if spec file changes [@mobuchowski](https://github.com/mobuchowski) \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/releases/0_3_1.md b/versioned_docs/version-1.24.1/releases/0_3_1.md new file mode 100644 index 0000000..b5c698d --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/0_3_1.md @@ -0,0 +1,9 @@ +--- +title: 0.3.1 +sidebar_position: 9994 +--- + +# 0.3.1 - 2021-12-03 + +### Fixed +* fix import in spark3 visitor [@mobuchowski](https://github.com/mobuchowski) \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/releases/0_4_0.md b/versioned_docs/version-1.24.1/releases/0_4_0.md new file mode 100644 index 0000000..25d2f99 --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/0_4_0.md @@ -0,0 +1,24 @@ +--- +title: 0.4.0 +sidebar_position: 9993 +--- + +# 0.4.0 - 2021-12-13 + +### Added +* Spark output metrics [@OleksandrDvornik](https://github.com/OleksandrDvornik) +* Separated tests between Spark 2 & 3 [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) +* Databricks install README and init scripts [@wjohnson](https://github.com/wjohnson) +* Iceberg integration with unit tests [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) +* Kafka read and write support [@OleksandrDvornik](https://github.com/OleksandrDvornik) / [@collado-mike](https://github.com/collado-mike) +* Arbitrary parameters supported in HTTP URL construction [@wjohnson](https://github.com/wjohnson) +* Increased visitor coverage for Spark commands [@mobuchowski](https://github.com/mobuchowski) / [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + +### Fixed +* dbt: column descriptions are properly filled from metadata.json [@mobuchowski](https://github.com/mobuchowski) +* dbt: allow parsing artifacts with version higher than officially supported [@mobuchowski](https://github.com/mobuchowski) +* dbt: dbt build command is supported [@mobuchowski](https://github.com/mobuchowski) +* dbt: fix crash when build command is used with seeds in dbt 1.0.0rc3 [@mobuchowski](https://github.com/mobuchowski) +* spark: increase logical plan visitor coverage [@mobuchowski](https://github.com/mobuchowski) +* spark: fix logical serialization recursion issue [@OleksandrDvornik](https://github.com/OleksandrDvornik) +* Use URL#getFile to fix build on Windows [@mobuchowski](https://github.com/mobuchowski) \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/releases/0_5_1.md b/versioned_docs/version-1.24.1/releases/0_5_1.md new file mode 100644 index 0000000..5f981da --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/0_5_1.md @@ -0,0 +1,15 @@ +--- +title: 0.5.1 +sidebar_position: 9992 +--- + +# 0.5.1 - 2022-01-18 + +### Added +* Support for dbt-spark adapter [@mobuchowski](https://github.com/mobuchowski) +* **New** `backend` to proxy OpenLineage events to one or more event streams 🎉 [@mandy-chessell](https://github.com/mandy-chessell) [@wslulciuc](https://github.com/wslulciuc) +* Add Spark extensibility API with support for custom Dataset and custom facet builders [@collado-mike](https://github.com/collado-mike) + +### Fixed +* airflow: fix import failures when dependencies for bigquery, dbt, great_expectations extractors are missing [@lukaszlaszko](https://github.com/lukaszlaszko) +* Fixed openlineage-spark jar to correctly rename bundled dependencies [@collado-mike](https://github.com/collado-mike) \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/releases/0_5_2.md b/versioned_docs/version-1.24.1/releases/0_5_2.md new file mode 100644 index 0000000..17d785e --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/0_5_2.md @@ -0,0 +1,22 @@ +--- +title: 0.5.2 +sidebar_position: 9991 +--- + +# 0.5.2 - 2022-02-10 + +### Added + +* Proxy backend example using `Kafka` [@wslulciuc](https://github.com/wslulciuc) +* Support Databricks Delta Catalog naming convention with DatabricksDeltaHandler [@wjohnson](https://github.com/wjohnson) +* Add javadoc as part of build task [@mobuchowski](https://github.com/mobuchowski) +* Include TableStateChangeFacet in non V2 commands for Spark [@mr-yusupov](https://github.com/mr-yusupov) +* Support for SqlDWRelation on Databricks' Azure Synapse/SQL DW Connector [@wjohnson](https://github.com/wjohnson) +* Implement input visitors for v2 commands [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) +* Enabled SparkListenerJobStart events to trigger open lineage events [@collado-mike](https://github.com/collado-mike) + +### Fixed + +* dbt: job namespaces for given dbt run match each other [@mobuchowski](https://github.com/mobuchowski) +* Fix Breaking SnowflakeOperator Changes from OSS Airflow [@denimalpaca](https://github.com/denimalpaca) +* Made corrections to account for DeltaDataSource handling [@collado-mike](https://github.com/collado-mike) \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/releases/0_6_0.md b/versioned_docs/version-1.24.1/releases/0_6_0.md new file mode 100644 index 0000000..d100232 --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/0_6_0.md @@ -0,0 +1,21 @@ +--- +title: 0.6.0 +sidebar_position: 9990 +--- + +# 0.6.0 - 2022-03-04 + +### Added +* Extract source code of PythonOperator code similar to SQL facet [@mobuchowski](https://github.com/mobuchowski) +* Add DatasetLifecycleStateDatasetFacet to spec [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) +* Airflow: extract source code from BashOperator [@mobuchowski](https://github.com/mobuchowski) +* Add generic facet to collect environmental properties (EnvironmentFacet) [@harishsune](https://github.com/harishsune) +* OpenLineage sensor for OpenLineage-Dagster integration [@dalinkim](https://github.com/dalinkim) +* Java-client: make generator generate enums as well [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) +* Added `UnknownOperatorAttributeRunFacet` to Airflow integration to record operators that don't produce lineage [@collado-mike](https://github.com/collado-mike) + +### Fixed +* Airflow: increase import timeout in tests, fix exit from integration [@mobuchowski](https://github.com/mobuchowski) +* Reduce logging level for import errors to info [@rossturk](https://github.com/rossturk) +* Remove AWS secret keys and extraneous Snowflake parameters from connection uri [@collado-mike](https://github.com/collado-mike) +* Convert to LifecycleStateChangeDatasetFacet [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) diff --git a/versioned_docs/version-1.24.1/releases/0_6_1.md b/versioned_docs/version-1.24.1/releases/0_6_1.md new file mode 100644 index 0000000..1f8ecda --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/0_6_1.md @@ -0,0 +1,10 @@ +--- +title: 0.6.1 +sidebar_position: 9989 +--- + +# 0.6.1 - 2022-03-07 + +### Fixed +* Catch possible failures when emitting events and log them [@mobuchowski](https://github.com/mobuchowski) +* dbt: jinja2 code using do extensions does not crash [@mobuchowski](https://github.com/mobuchowski) \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/releases/0_6_2.md b/versioned_docs/version-1.24.1/releases/0_6_2.md new file mode 100644 index 0000000..0ad1460 --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/0_6_2.md @@ -0,0 +1,16 @@ +--- +title: 0.6.2 +sidebar_position: 9988 +--- + +# 0.6.2 - 2022-03-16 + +### Added +* CI: add integration tests for Airflow's SnowflakeOperator and dbt-snowflake [@mobuchowski](https://github.com/mobuchowski) +* Introduce DatasetVersion facet in spec [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) +* Airflow: add external query id facet [@mobuchowski](https://github.com/mobuchowski) + +### Fixed +* Complete Fix of Snowflake Extractor get_hook() Bug [@denimalpaca](https://github.com/denimalpaca) +* Update artwork [@rossturk](https://github.com/rossturk) +* Airflow tasks in a DAG now report a common ParentRunFacet [@collado-mike](https://github.com/collado-mike) \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/releases/0_7_1.md b/versioned_docs/version-1.24.1/releases/0_7_1.md new file mode 100644 index 0000000..a7335c6 --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/0_7_1.md @@ -0,0 +1,23 @@ +--- +title: 0.7.1 +sidebar_position: 9987 +--- + +# 0.7.1 - 2022-04-19 + +### Added +* Python implements Transport interface - HTTP and Kafka transports are available ([#530](https://github.com/OpenLineage/OpenLineage/pull/530)) [@mobuchowski](https://github.com/mobuchowski) +* Add UnknownOperatorAttributeRunFacet and support in lineage backend ([#547](https://github.com/OpenLineage/OpenLineage/pull/547)) [@collado-mike](https://github.com/collado-mike) +* Support Spark 3.2.1 ([#607](https://github.com/OpenLineage/OpenLineage/pull/607)) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) +* Add StorageDatasetFacet to spec ([#620](https://github.com/OpenLineage/OpenLineage/pull/620)) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) +* Airflow: custom extractors lookup uses only get_operator_classnames method ([#656](https://github.com/OpenLineage/OpenLineage/pull/656)) [@mobuchowski](https://github.com/mobuchowski) +* README.md created at OpenLineage/integrations for compatibility matrix ([#663](https://github.com/OpenLineage/OpenLineage/pull/663)) [@howardyoo](https://github.com/howardyoo) + +### Fixed +* Dagster: handle updated PipelineRun in OpenLineage sensor unit test ([#624](https://github.com/OpenLineage/OpenLineage/pull/624)) [@dominiquetipton](https://github.com/dominiquetipton) +* Delta improvements ([#626](https://github.com/OpenLineage/OpenLineage/pull/626)) [@collado-mike](https://github.com/collado-mike) +* Fix SqlDwDatabricksVisitor for Spark2 ([#630](https://github.com/OpenLineage/OpenLineage/pull/630)) [@wjohnson](https://github.com/wjohnson) +* Airflow: remove redundant logging from GE import ([#657](https://github.com/OpenLineage/OpenLineage/pull/657)) [@mobuchowski](https://github.com/mobuchowski) +* Fix Shebang issue in Spark's wait-for-it.sh ([#658](https://github.com/OpenLineage/OpenLineage/pull/658)) [@mobuchowski](https://github.com/mobuchowski) +* Update parent_run_id to be a uuid from the dag name and run_id ([#664](https://github.com/OpenLineage/OpenLineage/pull/664)) [@collado-mike](https://github.com/collado-mike) +* Spark: fix time zone inconsistency in testSerializeRunEvent ([#681](https://github.com/OpenLineage/OpenLineage/pull/681)) [@sekikn](https://github.com/sekikn) \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/releases/0_8_1.md b/versioned_docs/version-1.24.1/releases/0_8_1.md new file mode 100644 index 0000000..a96db47 --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/0_8_1.md @@ -0,0 +1,15 @@ +--- +title: 0.8.1 +sidebar_position: 9986 +--- + +# 0.8.1 - 2022-04-29 + +### Added +* Airflow integration uses [new TaskInstance listener API](https://github.com/apache/airflow/blob/main/docs/apache-airflow/listeners.rst) for Airflow 2.3+ ([#508](https://github.com/OpenLineage/OpenLineage/pull/508)) [@mobuchowski](https://github.com/mobuchowski) +* Support for HiveTableRelation as input source in Spark integration ([#683](https://github.com/OpenLineage/OpenLineage/pull/683)) [@collado-mike](https://github.com/collado-mike) +* Add HTTP and Kafka Client to `openlineage-java` lib ([#480](https://github.com/OpenLineage/OpenLineage/pull/480)) [@wslulciuc](https://github.com/wslulciuc), [@mobuchowski](https://github.com/mobuchowski) +* New SQL parser, used by Postgres, Snowflake, Great Expectations integrations ([#644](https://github.com/OpenLineage/OpenLineage/pull/644)) [@mobuchowski](https://github.com/mobuchowski) + +### Fixed +* GreatExpectations: Fixed bug when invoking GreatExpectations using v3 API ([#683](https://github.com/OpenLineage/OpenLineage/pull/689)) [@collado-mike](https://github.com/collado-mike) \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/releases/0_8_2.md b/versioned_docs/version-1.24.1/releases/0_8_2.md new file mode 100644 index 0000000..f981473 --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/0_8_2.md @@ -0,0 +1,16 @@ +--- +title: 0.8.2 +sidebar_position: 9985 +--- + +# 0.8.2 - 2022-05-19 + +### Added +* `openlineage-airflow` now supports getting credentials from [Airflows secrets backend](https://airflow.apache.org/docs/apache-airflow/stable/security/secrets/secrets-backend/index.html) ([#723](https://github.com/OpenLineage/OpenLineage/pull/723)) [@mobuchowski](https://github.com/mobuchowski) +* `openlineage-spark` now supports [Azure Databricks Credential Passthrough](https://docs.microsoft.com/en-us/azure/databricks/security/credential-passthrough) ([#595](https://github.com/OpenLineage/OpenLineage/pull/595)) [@wjohnson](https://github.com/wjohnson) +* `openlineage-spark` detects datasets wrapped by `ExternalRDD`s ([#746](https://github.com/OpenLineage/OpenLineage/pull/746)) [@collado-mike](https://github.com/collado-mike) + +### Fixed +* `PostgresOperator` fails to retrieve host and conn during extraction ([#705](https://github.com/OpenLineage/OpenLineage/pull/705)) [@sekikn](https://github.com/sekikn) +* SQL parser accepts lists of sql statements ([#734](https://github.com/OpenLineage/OpenLineage/issues/734)) [@mobuchowski](https://github.com/mobuchowski) +* Missing schema when writing to Delta tables in Databricks ([#748](https://github.com/OpenLineage/OpenLineage/pull/748)) [@collado-mike](https://github.com/collado-mike) diff --git a/versioned_docs/version-1.24.1/releases/0_9_0.md b/versioned_docs/version-1.24.1/releases/0_9_0.md new file mode 100644 index 0000000..89d887d --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/0_9_0.md @@ -0,0 +1,29 @@ +--- +title: 0.9.0 +sidebar_position: 9984 +--- + +# 0.9.0 - 2022-06-03 + +### Added + +* Add static code anlalysis tool [mypy](http://mypy-lang.org) to run in CI for against all python modules ([`#802`](https://github.com/openlineage/openlineage/issues/802)) [@howardyoo](https://github.com/howardyoo) +* Extend `SaveIntoDataSourceCommandVisitor` to extract schema from `LocalRelaiton` and `LogicalRdd` in spark integration ([`#794`](https://github.com/OpenLineage/OpenLineage/pull/794)) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) +* Add `InMemoryRelationInputDatasetBuilder` for `InMemory` datasets to Spark integration ([`#818`](https://github.com/OpenLineage/OpenLineage/pull/818)) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) +* Add copyright to source files [`#755`](https://github.com/OpenLineage/OpenLineage/pull/755) [@merobi-hub](https://github.com/merobi-hub) +* Add `SnowflakeOperatorAsync` extractor support to Airflow integration [`#869`](https://github.com/OpenLineage/OpenLineage/pull/869) [@merobi-hub](https://github.com/merobi-hub) +* Add PMD analysis to proxy project ([`#889`](https://github.com/OpenLineage/OpenLineage/pull/889)) [@howardyoo](https://github.com/howardyoo) + +### Changed + +* Skip `FunctionRegistry.class` serialization in Spark integration ([`#828`](https://github.com/OpenLineage/OpenLineage/pull/828)) [@mobuchowski](https://github.com/mobuchowski) +* Install new `rust`-based SQL parser by default in Airflow integration ([`#835`](https://github.com/OpenLineage/OpenLineage/pull/835)) [@mobuchowski](https://github.com/mobuchowski) +* Improve overall `pytest` and integration tests for Airflow integration ([`#851`](https://github.com/OpenLineage/OpenLineage/pull/851),[`#858`](https://github.com/OpenLineage/OpenLineage/pull/858)) [@denimalpaca](https://github.com/denimalpaca) +* Reduce OL event payload size by excluding local data and including output node in start events ([`#881`](https://github.com/OpenLineage/OpenLineage/pull/881)) [@collado-mike](https://github.com/collado-mike) +* Split spark integration into submodules ([`#834`](https://github.com/OpenLineage/OpenLineage/pull/834), [`#890`](https://github.com/OpenLineage/OpenLineage/pull/890)) [@tnazarew](https://github.com/tnazarew) [@mobuchowski](https://github.com/mobuchowski) + +### Fixed + +* Conditionally import `sqlalchemy` lib for Great Expectations integration ([`#826`](https://github.com/OpenLineage/OpenLineage/pull/826)) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) +* Add check for missing **class** `org.apache.spark.sql.catalyst.plans.logical.CreateV2Table` in Spark integration ([`#866`](https://github.com/OpenLineage/OpenLineage/pull/866)) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) +* Fix static code analysis issues ([`#867`](https://github.com/OpenLineage/OpenLineage/pull/867),[`#874`](https://github.com/OpenLineage/OpenLineage/pull/874)) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/releases/1_0_0.md b/versioned_docs/version-1.24.1/releases/1_0_0.md new file mode 100644 index 0000000..120f4ee --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/1_0_0.md @@ -0,0 +1,26 @@ +--- +title: 1.0.0 +sidebar_position: 9957 +--- + +# 1.0.0 - 2023-08-01 + +### Added +* **Airflow: convert lineage from legacy `File` definition** [`#2006`](https://github.com/OpenLineage/OpenLineage/pull/2006) [@mobuchowski](https://github.com/mobuchowski) + *Adds coverage for `File` entity definition to enhance backwards compatibility.* + +### Removed +* **Spec: remove facet ref from core** [`#1997`](https://github.com/OpenLineage/OpenLineage/pull/1997) [@JDarDagran](https://github.com/JDarDagran) + *Removes references to facets from the core spec that broke compatibility with JSON schema specification.* + +### Changed +* **Airflow: change log level to `DEBUG` when extractor isn't found** [`#2012`](https://github.com/OpenLineage/OpenLineage/pull/2012) [@kaxil](https://github.com/kaxil) + *Changes log level from `WARNING` to `DEBUG` when an extractor is not available.* +* **Airflow: make sure we cannot fail in thread despite direct execution** [`#2010`](https://github.com/OpenLineage/OpenLineage/pull/2010) [@mobuchowski](https://github.com/mobuchowski) + *Ensures the listener is not failing tasks, even in unlikely scenarios.* + +### Fixed +* **Airflow: stop using reusable session by default, do not send full event on Snowflake complete** [`#2025`](https://github.com/OpenLineage/OpenLineage/pull/2025) [@mobuchowski](https://github.com/mobuchowski) + *Fixes the issue of the Snowflake connector clashing with `HttpTransport` by disabling automatic `requests` session reuse and not running `SnowflakeExtractor` again on job completion.* +* **Client: fix error message to avoid confusion** [`#2001`](https://github.com/OpenLineage/OpenLineage/pull/2001) [@mars-lan](https://github.com/mars-lan) + *Fixes the error message in `HttpTransport` in the case of a null URL.* \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/releases/1_10_2.md b/versioned_docs/version-1.24.1/releases/1_10_2.md new file mode 100644 index 0000000..93ca821 --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/1_10_2.md @@ -0,0 +1,46 @@ +--- +title: 1.10.2 +sidebar_position: 9947 +--- + +# 1.10.2 - 2024-03-15 + +### Added +* **Dagster: add new provider for version 1.6.10** [`#2518`](https://github.com/OpenLineage/OpenLineage/pull/2518) [@JDarDagran](https://github.com/JDarDagran) + *Adds the new provider required by the latest version of Dagster.* +* **Flink: support lineage for a hybrid source** [`#2491`](https://github.com/OpenLineage/OpenLineage/pull/2491) [@HuangZhenQiu](https://github.com/HuangZhenQiu) + *Adds support for hybrid source lineage for users of Kafka and Iceberg sources in backfill usecases.* +* **Flink: improve Cassandra lineage metadata** [`#2479`](https://github.com/OpenLineage/OpenLineage/pull/2479) [@HuangZhenQiu](https://github.com/HuangZhenQiu) + *Cassandra cluster info to be used as the dataset namespace, and the keyspace to be combined with the table name as the dataset name.* +* **Flink: bump Flink JDBC connector version** [`#2472`](https://github.com/OpenLineage/OpenLineage/pull/2472) [@HuangZhenQiu](https://github.com/HuangZhenQiu) + *Bumps the Flink JDBC connector version to 3.1.2-1.18 for Flink 1.18.* +* **Java: add a `OpenLineageClientUtils#loadOpenLineageJson(InputStream)` and change `OpenLineageClientUtils#loadOpenLineageYaml(InputStream)` methods** [`#2490`](https://github.com/OpenLineage/OpenLineage/pull/2490) [@d-m-h](https://github.com/d-m-h) + *This improves the explicitness of the methods. Previously, `loadOpenLineageYaml(InputStream)` wanted the `InputStream` to contain bytes that represented JSON.* +* **Java: add info from the HTTP response to the client exception** [`#2486`](https://github.com/OpenLineage/OpenLineage/pull/2486) [@davidjgoss](https://github.com/davidjgoss) + *Adds the status code and body as properties on the thrown exception when a non-success response is encountered in the HTTP transport.* +* **Python: add support for MSK IAM authentication with a new transport** [`#2478`](https://github.com/OpenLineage/OpenLineage/pull/2478) [@mattiabertorello](https://github.com/mattiabertorello) + *Eases publication of events to MSK with IAM authentication.* + +### Removed +* **Airflow: remove redundant information from facets** [`#2524`](https://github.com/OpenLineage/OpenLineage/pull/2524) [@kacpermuda](https://github.com/kacpermuda) + *Refines the operator's attribute inclusion logic in facets to include only those known to be important or compact, ensuring that custom operator attributes with substantial data do not inflate the event size.* + +### Fixed +* **Airflow: proceed without rendering templates if `task_instance` copy fails** [`#2492`](https://github.com/OpenLineage/OpenLineage/pull/2492) [@kacpermuda](https://github.com/kacpermuda) + *Airflow will now proceed without rendering templates if `task_instance` copy fails in `listener.on_task_instance_running`.* +* **Spark: fix the `HttpTransport` timeout** [`#2475`](https://github.com/OpenLineage/OpenLineage/pull/2475) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *The existing `timeout` config parameter is ambiguous: implementation treats the value as double in seconds, although the documentation claims it's milliseconds. A new config param `timeoutInMillis` has been added. the Existing `timeout` has been removed from docs and will be deprecated in 1.13.* +* **Spark: prevent NPE if the context is null** [`#2515`](https://github.com/OpenLineage/OpenLineage/pull/2515) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Adds a check for a null context before executing `end(jobEnd)`.* +* **Flink: fix class not found issue for Cassandra** [`#2507`](https://github.com/OpenLineage/OpenLineage/pull/2507) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Fixes the class not found issue when checking for Cassandra classes. Also fixes the Maven POM dependency on subprojects.* +* **Flink: refine the JDBC table name** [`#2512`](https://github.com/OpenLineage/OpenLineage/pull/2512) [@HuangZhenQiu](https://github.com/HuangZhenQiu) + *Enables the JDBC table name with a schema prefix.* +* **Flink: fix JDBC dataset naming** [`#2508`](https://github.com/OpenLineage/OpenLineage/pull/2508) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *For JDBC, the Flink integration is not adjusted to the Openlineage naming convention. There is code that extracts the dataset namespace/name from the JDBC connection url, but it's in the Spark integration. As a solution, this code has to be extracted into the Java client and reused by the Spark and Flink integrations.* +* **Flink: fix failure due to missing Cassandra classes** [`#2507`](https://github.com/OpenLineage/OpenLineage/pull/2507) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Flink is failing when no Cassandra classes are present on the class path. This is happening because of `CassandraUtils` class which has a static `hasClasses` method, but it imports Cassandra-related classes in the header. Also, the Flink subproject contains an unnecessary `maven-publish` plugin.* +* **Flink: fix release runtime dependencies** [`#2504`](https://github.com/OpenLineage/OpenLineage/pull/2504) [@HuangZhenQiu](https://github.com/HuangZhenQiu) + *The shadow jar of Flink is not minimized, so some internal jars are listed as runtime dependences. This removes them from the final pom.xml file in the Flink module.* +* **Spec: improve Cassandra lineage metadata** [`#2479`](https://github.com/OpenLineage/OpenLineage/pull/2479) [@HuangZhenQiu](https://github.com/HuangZhenQiu) + *Following the namespace definition, we should use `cassandra://host:port`.* \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/releases/1_11_3.md b/versioned_docs/version-1.24.1/releases/1_11_3.md new file mode 100644 index 0000000..f3c1707 --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/1_11_3.md @@ -0,0 +1,50 @@ +--- +title: 1.11.3 +sidebar_position: 9946 +--- + +# 1.11.3 - 2024-04-04 + +### Added +* **Common: add support for `SCRIPT`-type jobs in BigQuery** [`#2564`](https://github.com/OpenLineage/OpenLineage/pull/2564) [@kacpermuda](https://github.com/kacpermuda) + In the case of `SCRIPT`-type jobs in BigQuery, no lineage was being extracted because the `SCRIPT` job had no lineage information - it only spawned child jobs that had that information. With this change, the integration extracts lineage information from child jobs when dealing with `SCRIPT`-type jobs. +* **Spark: support for built-in lineage extraction** [`#2272`](https://github.com/OpenLineage/OpenLineage/pull/2272) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *This PR adds a `spark-interfaces-scala` package that allows lineage extraction to be implemented within Spark extensions (Iceberg, Delta, GCS, etc.). The Openlineage integration, when traversing the query plan, verifies if nodes implement defined interfaces. If so, interface methods are used to extract lineage. Refer to the [README](https://github.com/OpenLineage/OpenLineage/tree/spark/built-in-lineage/integration/spark-interfaces-scala#readme) for more details.* +* **Spark/Java: add support for Micrometer metrics** [`#2496`](https://github.com/OpenLineage/OpenLineage/pull/2496) [@mobuchowski](https://github.com/mobuchowski) + *Adds a mechanism for forwarding metrics to any [Micrometer-compatible implementation](https://docs.micrometer.io/micrometer/reference/implementations.html). Included: `MeterRegistryyFactory`, `MicrometerProvider`, `StatsDMetricsBuilder`, metrics config in OpenLineage config, and a Java client implementation.* +* **Spark: add support for telemetry mechanism** [`#2528`](https://github.com/OpenLineage/OpenLineage/pull/2528) [@mobuchowski](https://github.com/mobuchowski) + *Adds timers, counters and additional instrumentation in order to implement Micrometer metrics collection.* +* **Spark: support query option on table read** [`#2556`](https://github.com/OpenLineage/OpenLineage/pull/2556) [@mobuchowski](https://github.com/mobuchowski) + *Adds support for the Spark-BigQuery connector's query input option, which executes a query directly on BigQuery, storing the result in an intermediate dataset, bypassing Spark's computation layer. Due to this, the lineage is retrieved using the SQL parser, similarly to `JDBCRelation`.* +* **Spark: change `SparkPropertyFacetBuilder` to support recording Spark runtime** [`#2523`](https://github.com/OpenLineage/OpenLineage/pull/2523) [@Ruihua98](https://github.com/Ruihua98) + *Modifies `SparkPropertyFacetBuilder` to capture the `RuntimeConfig` of the Spark session because the existing `SparkPropertyFacet` can only capture the static config of the Spark context. This facet will be added in both RDD-related and SQL-related runs.* +* **Spec: add `fileCount` to dataset stat facets** [`#2562`](https://github.com/OpenLineage/OpenLineage/pull/2562) [@dolfinus](https://github.com/dolfinus) + *Adds a `fileCount` field to `DataQualityMetricsInputDatasetFacet` and `OutputStatisticsOutputDatasetFacet` specification.* + +### Fixed +* **dbt: `dbt-ol` should transparently exit with the same exit code as the child `dbt` process** [`#2560`](https://github.com/OpenLineage/OpenLineage/pull/2560) [@blacklight](https://github.com/blacklight) + *Makes `dbt-ol` transparently exit with the same exit code as the child `dbt` process.* +* **Flink: disable module metadata generation** [`#2531`](https://github.com/OpenLineage/OpenLineage/pull/2531) [@HuangZhenQiu](https://github.com/HuangZhenQiu) + *Disables the module metadata generation for Flink to fix the problem of having gradle dependencies to submodules within `openlineage-flink.jar`.* +* **Flink: fixes to version 1.19** [`#2507`](https://github.com/OpenLineage/OpenLineage/pull/2507) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Fixes the class not found issue when checking for Cassandra classes. Also fixes the Maven pom dependency on subprojects.* +* **Python: small improvements to `.emit()` method logging & annotations** [`#2539`](https://github.com/OpenLineage/OpenLineage/pull/2539) [@dolfinus](https://github.com/dolfinus) + *Updates OpenLineage.emit debug messages and annotations.* +* **SQL: show error message when OpenLineageSql cannot find native library** [`#2547`](https://github.com/OpenLineage/OpenLineage/pull/2547) [@dolfinus](https://github.com/dolfinus) + *When the `OpenLineageSql` class could not load a native library, if returned `None` for all operations. But because the error message was suppressed, the user could not determine the reason.* +* **SQL: update code to conform to upstream sqlparser-rs changes** [`#2510`](https://github.com/OpenLineage/OpenLineage/pull/2510) [@mobuchowski](https://github.com/mobuchowski) + *Includes tests and cosmetic improvements.* +* **Spark: fix access to active Spark session** [`#2535`](https://github.com/OpenLineage/OpenLineage/pull/2535) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Changes behavior so `IllegalStateException` is always caught when accessing `SparkSession`.* +* **Spark: fix Databricks environment** [`#2537`](https://github.com/OpenLineage/OpenLineage/pull/2537) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Fixes the `ClassNotFoundError` occurring on Databricks runtime and extends the integration test to verify `DatabricksEnvironmentFacet`.* +* **Spark: fixed memory leak in JobMetricsHolder** [`#2565`](https://github.com/OpenLineage/OpenLineage/pull/2565) [@d-m-h](https://github.com/d-m-h) + *The `JobMetricsHolder#cleanUp(int)` method now correctly purges unneeded state from both maps.* +* **Spark: fixed memory leak in `UnknownEntryFacetListener`** [`#2557`](https://github.com/OpenLineage/OpenLineage/pull/2557) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Prevents storing the state when a facet is disabled, purging the state after populating run facets.* +* **Spark: fix parsing `JDBCOptions(table=...)` containing subquery** [`#2546`](https://github.com/OpenLineage/OpenLineage/pull/2546) [@dolfinus](https://github.com/dolfinus) + *Prevents `openlineage-spark` from producing datasets with names like `database.(select * from table)` for JDBC sources.* +* **Spark/Snowflake: support query option via SQL parser** [`#2563`](https://github.com/OpenLineage/OpenLineage/pull/2563) [@mobuchowski](https://github.com/mobuchowski) + *When a Snowflake job is bypassing Spark's computation layer, now the SQL parser will be used to get the lineage.* +* **Spark: always catch `IllegalStateException` when accessing `SparkSession`** [`#2535`](https://github.com/OpenLineage/OpenLineage/pull/2535) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *`IllegalStateException` was not being caught.* \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/releases/1_12_0.md b/versioned_docs/version-1.24.1/releases/1_12_0.md new file mode 100644 index 0000000..afe49b9 --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/1_12_0.md @@ -0,0 +1,29 @@ +--- +title: 1.12.0 +sidebar_position: 9945 +--- + +# 1.12.0 - 2024-04-09 + +### Added +* **Airflow: add `lineage_job_namespace` and `lineage_job_name` macros** [`#2582`](https://github.com/OpenLineage/OpenLineage/pull/2582) [@dolfinus](https://github.com/dolfinus) + *Adds new Airflow macros `lineage_job_namespace()`, `lineage_job_name(task)` that return an Airflow namespace and Airflow job name, respectively.* +* **Spec: Allow nested struct fields in `SchemaDatasetFacet`** [`#2548`](https://github.com/OpenLineage/OpenLineage/pull/2548) [@dolfinus](https://github.com/dolfinus) + *Allows nested fields support to `SchemaDatasetFacet`.* + +### Fixed +* **Spark: fix PMD for test** [`#2588`](https://github.com/OpenLineage/OpenLineage/pull/2588) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Clears `pmdTestScala212` from warnings that clutter the logs.* +* **Dbt: propagate the dbt return code also when no OpenLineage events are emitted** [`#2591`](https://github.com/OpenLineage/OpenLineage/pull/2591) [@blacklight](https://github.com/blacklight) + *`dbt-ol` now propagates the exit code of the underlying dbt process even if no lineage events are emitted.* +* **Java: make sure string isn't empty to prevent going out of bounds** [`#2585`](https://github.com/OpenLineage/OpenLineage/pull/2585) [@harels](https://github.com/harels) + *String lookup was not accounting for empty strings and causing a `java.lang.StringIndexOutOfBoundsException`.* +* **Spark: use `HashSet` in column-level lineage instead of iterating through `LinkedList`** [`#2584`](https://github.com/OpenLineage/OpenLineage/pull/2584) [@mobuchowski](https://github.com/mobuchowski) + *Takes advantage of performance gains available from using `HashSet` for collection.* +* **Python: fix missing pkg_resources module on Python 3.12** [`#2572`](https://github.com/OpenLineage/OpenLineage/pull/2572) [@dolfinus](https://github.com/dolfinus) + *Removes `pkg_resources` dependency and replaces it with the [packaging](https://packaging.pypa.io/en/latest/version.html) lib.* +* **Airflow: fix format returned by `airflow.macros.lineage_parent_id`** [`#2578`](https://github.com/OpenLineage/OpenLineage/pull/2578) [@blacklight](https://github.com/blacklight) + *Fixes the run format returned by the `lineage_parent_id` Airflow macro and simplifies the format of the `lineage_parent_id` and `lineage_run_id` macros.* +* **Dagster: limit Dagster version to 1.6.9** [`#2579`](https://github.com/OpenLineage/OpenLineage/pull/2579) [@JDarDagran](https://github.com/JDarDagran) + *Adds an upper limit on supported versions of Dagster as the integration is no longer actively maintained and recent releases introduce breaking changes.* + \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/releases/1_13_1.md b/versioned_docs/version-1.24.1/releases/1_13_1.md new file mode 100644 index 0000000..b3e664e --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/1_13_1.md @@ -0,0 +1,38 @@ +--- +title: 1.13.1 +sidebar_position: 9944 +--- + +# 1.13.1 - 2024-04-26 + +### Added +* **Java: allow timeout for circuit breakers** [`#2609`](https://github.com/OpenLineage/OpenLineage/pull/2609) @pawel-big-lebowski + *Extends the circuit breaker mechanism to contain a global timeout that stops running OpenLineage integration code when a specified amount of time has elapsed.* +* **Java: handle `DataSetEvent` and `JobEvent` in `Transport.emit`** [`#2611`](https://github.com/OpenLineage/OpenLineage/pull/2611) @dolfinus + *Adds overloads `Transport.emit(OpenLineage.DatasetEvent)` and `Transport.emit(OpenLineage.JobEvent)`, reusing the implementation of `Transport.emit(OpenLineage.RunEvent)`. **Please note**: `Transport.emit(String)` is now deprecated and will be removed in 1.16.0.* +* **Java/Python: add `GZIP` compression to `HttpTransport`** [`#2603`](https://github.com/OpenLineage/OpenLineage/pull/2603) [`#2604`](https://github.com/OpenLineage/OpenLineage/pull/2604) @dolfinus + *Adds a `compression` option to `HttpTransport` config in the Java and Python clients, with `gzip` implementation.* +* **Java/Python/Proxy: properly set Kafka message key** [`#2571`](https://github.com/OpenLineage/OpenLineage/pull/2571) [`#2597`](https://github.com/OpenLineage/OpenLineage/pull/2597) [`#2598`](https://github.com/OpenLineage/OpenLineage/pull/2598) @dolfinus + *Adds a new `messageKey` option to `KafkaTransport` config in the Python and Java clients, as well as the Proxy. This option replaces the `localServerId` option, which is now deprecated. Default value is generated using the run id (for `RunEvent`), job name (for `JobEvent`) or dataset name (for `DatasetEvent`). This value is used by the Kafka producer to distribute messages along topic partitions, instead of sending all the events to the same partition. This allows for full utilization of Kafka performance advantages.* +* **Flink: add support for Micrometer metrics** [`#2633`](https://github.com/OpenLineage/OpenLineage/pull/2633) @mobuchowski + *Adds a mechanism for forwarding metrics to any [Micrometer-compatible implementation](https://docs.micrometer.io/micrometer/reference/implementations.html) for Flink as has been implemented for Spark. Included: `MeterRegistry`, `CompositeMeterRegistry`, `SimpleMeterRegistry`, and `MicrometerProvider`.* +* **Python: generate Python facets from JSON schemas** [`#2520`](https://github.com/OpenLineage/OpenLineage/pull/2520) @JDarDagran + *Objects specified with JSON Schema needed to be manually developed and checked in Python, leading to many discrepancies, including wrong schema URLs. This adds a `datamodel-code-generator` for parsing JSON Schema and generating Pydantic or dataclasses classes, etc. In order to use `attrs` (a more modern version of dataclasses) and overcome some limitations of the tool, a number of steps have been added in order to customize code to meet OpenLineage requirements. Included: updated references to the latest base JSON Schema spec for all child facets. **Please note**: newly generated code creates a v2 interface that will be implemented in existing integrations in a future release. The v2 interface introduces some breaking changes: facets are put into separate modules per JSON Schema spec file, some names are changed, and several classes are now `kw_only`.* +* **Spark/Flink/Java: support YAML config files together with SparkConf/FlinkConf** [`#2583`](https://github.com/OpenLineage/OpenLineage/pull/2583) @pawel-big-lebowski + *Creates a `SparkOpenlineageConfig` and `FlinkOpenlineageConfig` for a more uniform configuration experience for the user. Renames `OpenLineageYaml` to `OpenLineageConfig` and modifies the code to use only `OpenLineageConfig` classes. Includes a doc update to mention that both ways can be used interchangeably and final documentation will merge all values provided.* +* **Spark: add custom token provider support** [`#2613`](https://github.com/OpenLineage/OpenLineage/pull/2613) @tnazarew + *Adds a `TokenProviderTypeIdResolver` to handle both `FQCN` and (for backward compatibility) `api_key` types in `spark.openlineage.transport.auth.type`.* +* **Spark/Flink: job ownership facet** [`#2533`](https://github.com/OpenLineage/OpenLineage/pull/2533) @pawel-big-lebowski + *Enables configuration entries specifying ownership of the job that will result in an `OwnershipJobFacet` being attached to job facets.* + +### Changed +* **Java: sync Kinesis `partitionKey` format with Kafka implementation** [`#2620`](https://github.com/OpenLineage/OpenLineage/pull/2620) @dolfinus + *Changes the format of Kinesis `partitionKey` from `{jobNamespace}:{jobName}` to `run:{jobNamespace}/{jobName}` to match the Kafka transport implementation.* + +### Fixed +* **Python: make `load_config` return an empty dict instead of `None` when file empty** [`#2596`](https://github.com/OpenLineage/OpenLineage/pull/2596) @kacpermuda + *`utils.load_config()` now returns an empty dict instead of `None` in the case of an empty file to prevent an `OpenLineageClient` crash.* +* **Java: render lombok-generated methods in javadoc** [`#2614`](https://github.com/OpenLineage/OpenLineage/pull/2614) @dolfinus + *Fixes rendering of javadoc for methods generated by `lombok` annotations by adding a `delombok` step.* +* **Spark/Snowflake: parse NPE when query option is used and table is empty** [`#2599`](https://github.com/OpenLineage/OpenLineage/pull/2599) @mobuchowski + *Fixes NPE when using query option when reading from Snowflake.* diff --git a/versioned_docs/version-1.24.1/releases/1_14_0.md b/versioned_docs/version-1.24.1/releases/1_14_0.md new file mode 100644 index 0000000..5e4c7f6 --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/1_14_0.md @@ -0,0 +1,38 @@ +--- +title: 1.14.0 +sidebar_position: 9943 +--- + +# 1.14.0 - 2024-05-09 + +### Added +* **Common/dbt: add DREMIO to supported dbt profile types** [`#2674`](https://github.com/OpenLineage/OpenLineage/pull/2674) [@surisimran](https://github.com/surisimran) + *Adds support for dbt-dremio, resolving [`#2668`](https://github.com/OpenLineage/OpenLineage/issues/2668). +* **Flink: support Protobuf format for sources and sinks** [`#2482`](https://github.com/OpenLineage/OpenLineage/pull/2482) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Adds schema extraction from Protobuf classes. Includes support for nested object types, `array` type, `map` type, `oneOf` and `any`.* +* **Java: add facet conversion test** [`#2663`](https://github.com/OpenLineage/OpenLineage/pull/2663) [@julienledem](https://github.com/julienledem) + *Adds a simple test that shows how to deserialize a facet in the server model.* +* **Spark: job type facet to distinguish RDD jobs from Spark SQL jobs** [`#2652`](https://github.com/OpenLineage/OpenLineage/pull/2652) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Sets the `jobType` property of `JobTypeJobFacet` to either `SQL_JOB` or `RDD_JOB`.* +* **Spark: add Glue symlink if reading from Glue catalog table** [`#2646`](https://github.com/OpenLineage/OpenLineage/pull/2646) [@mobuchowski](https://github.com/mobuchowski) + *The dataset symlink now points to the Glue catalog table name if the Glue catalog table is used.* +* **Spark: add spark_jobDetails facet** [`#2662`](https://github.com/OpenLineage/OpenLineage/pull/2662) [@dolfinus](https://github.com/dolfinus) + *Adds a `SparkJobDetailsFacet`, capturing information about Spark application jobs -- e.g. `jobId`, `jobDescription`, `jobGroup`, `jobCallSite`. This allows for tracking an OpenLineage `RunEvent` with a specific Spark job in SparkUI.* + +### Removed +* **Airflow: drop old ParentRunFacet key** [`#2660`](https://github.com/OpenLineage/OpenLineage/pull/2660) [@dolfinus](https://github.com/dolfinus) + *Changes the integration to use the `parent` key for `ParentFacet`, dropping the outdated `parentRun`.* +* **Spark: drop SparkVersionFacet** [`#2659`](https://github.com/OpenLineage/OpenLineage/pull/2659) [@dolfinus](https://github.com/dolfinus) + *Drops the `SparkVersion` facet, deprecated since 1.2.0 and planned for removal since 1.4.0.* +* **Python: allow relative paths in URI formats for Python facets** [`#2679`](https://github.com/OpenLineage/OpenLineage/pull/2679) [@JDarDagran](https://github.com/JDarDagran) + *Removes a URI validator that checked if scheme and netloc were present, allowing relative paths in URI formats for Python facets.* + +### Changed +* **GreatExpectations: rename `ParentRunFacet` key** [`#2661`](https://github.com/OpenLineage/OpenLineage/pull/2661) [@dolfinus](https://github.com/dolfinus) + *The OpenLineage spec defined the `ParentRunFacet` with the property name parent but the Great Expectations integration created a lineage event with `parentRun`. This renames `ParentRunFacet` key from `parentRun` to `parent`. For backwards compatibility, keep the old name.* + +### Fixed +* **dbt: support a less ambiguous logic to generate job names** [`#2658`](https://github.com/OpenLineage/OpenLineage/pull/2658) [@blacklight](https://github.com/blacklight) + *Includes profile and models in the dbt job name to make it more unique.* +* **Spark: update to use org.apache.commons.lang3 instead of org.apache.commons.lang** [`#2676`](https://github.com/OpenLineage/OpenLineage/pull/2676) [@harels](https://github.com/harels) + *Updates Apache Commons Lang to the latest version. We were mixing two versions, and the old one was not present in many places.* diff --git a/versioned_docs/version-1.24.1/releases/1_15_0.md b/versioned_docs/version-1.24.1/releases/1_15_0.md new file mode 100644 index 0000000..e0683db --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/1_15_0.md @@ -0,0 +1,41 @@ +--- +title: 1.15.0 +sidebar_position: 9942 +--- + +# 1.15.0 - 2024-05-24 + +### Added +* **Flink: handle Iceberg tables with nested and complex field types** [`#2706`](https://github.com/OpenLineage/OpenLineage/pull/2706) [@dolfinus](https://github.com/dolfinus) + *Creates `SchemaDatasetFacet` with nested fields for Iceberg tables with list, map and struct columns.* +* **Flink: handle Avro schema with nested and complex field types** [`#2711`](https://github.com/OpenLineage/OpenLineage/pull/2711) [@dolfinus](https://github.com/dolfinus) + *Creates `SchemaDatasetFacet` with nested fields for Avro schemas with complex types (union, record, map, array, fixed).* +* **Spark: add facets to Spark application events** [`#2677`](https://github.com/OpenLineage/OpenLineage/pull/2677) [@dolfinus](https://github.com/dolfinus) + *Adds support for Spark application start and stop events in the `ExecutionContext` interface.* +* **Spark: add nested fields to `SchemaDatasetFieldsFacet`** [`#2689`](https://github.com/OpenLineage/OpenLineage/pull/2689) [@dolfinus](https://github.com/dolfinus) + *Adds nested Spark Dataframe fields support to `SchemaDatasetFieldsFacet`. Also include field comment as `description`.* +* **Spark: add `SparkApplicationDetailsFacet`** [`#2688`](https://github.com/OpenLineage/OpenLineage/pull/2688) [@dolfinus](https://github.com/dolfinus) + *Adds `SparkApplicationDetailsFacet` to `runEvent`s emitted on Spark application start.* + +### Removed +* **Airflow: remove Airflow < 2.3.0 support** [`#2710`](https://github.com/OpenLineage/OpenLineage/pull/2710) [@kacpermuda](https://github.com/kacpermuda) + *Removes Airflow < 2.3.0 support.* +* **Integration: use v2 Python facets** [`#2693`](https://github.com/OpenLineage/OpenLineage/pull/2693) [@JDarDagran](https://github.com/JDarDagran) + *Migrates integrations from removed v1 facets to v2 Python facets.* + +### Fixed +* **Spark: improve job suffix assigning mechanism** [`#2665`](https://github.com/OpenLineage/OpenLineage/pull/2665) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *For some catalog handlers, the mechanism was creating different dataset identifiers on START and COMPLETE depending on whether a dataset was created or not. This improves the mechanism to assign a deterministic job suffix based on the output dataset at the moment of a start event. **Note**: this may change job names in some scenarios.* +* **Airflow: fix empty dataset name for `AthenaExtractor`** [`#2700`](https://github.com/OpenLineage/OpenLineage/pull/2700) [@kacpermuda](https://github.com/kacpermuda) + *The dataset name should not be empty when passing only a bucket as S3 output in Athena.* +* **Flink: fix `SchemaDatasetFacet` for Protobuf repeated primitive types** [`#2685`](https://github.com/OpenLineage/OpenLineage/pull/2685) [@dolfinus](https://github.com/dolfinus) + *Fixes issues with the Protobuf schema converter.* +* **Python: clean up Python client code, add logging.** [`#2653`](https://github.com/OpenLineage/OpenLineage/pull/2653) [@kacpermuda](https://github.com/kacpermuda) + *Cleans up client code, refactors logging in all Python modules.* +* **SQL: catch `TokenizerError`s, `PanicException`** [`#2703`](https://github.com/OpenLineage/OpenLineage/pull/2703) [@mobuchowski](https://github.com/mobuchowski) + *The SQL parser now catches and handles these errors.* +* **Python: suppress warning on importing v1 module in __init__.py.** [`#2713`](https://github.com/OpenLineage/OpenLineage/pull/2713) [@JDarDagran](https://github.com/JDarDagran) + *Suppresses the deprecation warning when v1 facets are used.* +* **Integration/Java/Python: use UUIDv7 instead of UUIDv4** [`#2686`](https://github.com/OpenLineage/OpenLineage/pull/2686) [`#2687`](https://github.com/OpenLineage/OpenLineage/pull/2687) [@dolfinus](https://github.com/dolfinus) + *Uses UUIDv7 instead of UUIDv4 for `runEvent`s. The new UUID version produces monotonically increasing values, which leads to more performant queries on the OL consumer side. **Note**: UUID version is an implementation detail and can be changed in the future.* + \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/releases/1_16_0.md b/versioned_docs/version-1.24.1/releases/1_16_0.md new file mode 100644 index 0000000..4c1269b --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/1_16_0.md @@ -0,0 +1,16 @@ +--- +title: 1.16.0 +sidebar_position: 9941 +--- + +# 1.16.0 - 2024-05-28 + +### Added +* **Spark: add `jobType` facet to Spark application events** [`#2719`](https://github.com/OpenLineage/OpenLineage/pull/2719) [@dolfinus](https://github.com/dolfinus) + *Add `jobType` facet to `runEvent`s emitted by `SparkListenerApplicationStart`.* + +### Fixed +* **dbt: fix swapped namespace and name in dbt integration** [`#2735`](https://github.com/OpenLineage/OpenLineage/pull/2735) [@JDarDagran](https://github.com/JDarDagran) + *Fixes variable names.* +* **Python: override debug level** [`#2727`](https://github.com/OpenLineage/OpenLineage/pull/2735) [@mobuchowski](https://github.com/mobuchowski) + *Removes debug-level logging of HTTP requests.* diff --git a/versioned_docs/version-1.24.1/releases/1_17_1.md b/versioned_docs/version-1.24.1/releases/1_17_1.md new file mode 100644 index 0000000..5cbd0fd --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/1_17_1.md @@ -0,0 +1,56 @@ +--- +title: 1.17.1 +sidebar_position: 9940 +--- + +# 1.17.1 - 2024-06-21 + +### Added +* **Java: dataset namespace resolver feature** [`#2720`](https://github.com/OpenLineage/OpenLineage/pull/2720) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Adds a dataset namespace resolving mechanism that resolves dataset namespaces based on the resolvers configured. The core mechanism is implemented in openlineage-java and can be used within the Flink and Spark integrations.* +* **Spark: add transformation extraction** [`#2758`](https://github.com/OpenLineage/OpenLineage/pull/2758) [@tnazarew](https://github.com/tnazarew) + *Adds a transformation type extraction mechanism.* +* **Spark: add GCP run and job facets** [`#2643`](https://github.com/OpenLineage/OpenLineage/pull/2643) [@codelixir](https://github.com/codelixir) + *Adds `GCPRunFacetBuilder` and `GCPJobFacetBuilder` to report additional facets when running on Google Cloud Platform.* +* **Spark: improve namespace format for SQLServer** [`#2773`](https://github.com/OpenLineage/OpenLineage/pull/2773) [@dolfinus](https://github.com/dolfinus) + *Improves the namespace format for SQLServer.* +* **Spark: verify jar content after build** [`#2698`](https://github.com/OpenLineage/OpenLineage/pull/2698) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Adds a tool to verify `shadowJar` content and prevent reported issues. These are hard to prevent currently and require manual verification of manually unpacked jar content.* +* **Spec: add transformation type info** [`#2756`](https://github.com/OpenLineage/OpenLineage/pull/2756) [@tnazarew](https://github.com/tnazarew) + *Adds information about the transformation type in `ColumnLineageDatasetFacet`. `transformationType` and `transformationDescription` are marked as deprecated.* +* **Spec: implementing facet registry (following #2161)** [`#2729`](https://github.com/OpenLineage/OpenLineage/pull/2729) [@harels](https://github.com/harels) + *Introduces the foundations of the new facet Registry into the repo.* +* **Spec: register GCP common job facet** [`#2740`](https://github.com/OpenLineage/OpenLineage/pull/2740) [@ngorchakova](https://github.com/ngorchakova) + *Registers the GCP job facet that contains common attributes that will improve the way lineage is parsed and displayed by the GCP platform. Based on the [proposal](https://github.com/OpenLineage/OpenLineage/pull/2228/files), GCP Lineage would like to define facets that are expected from integrations. The list of support facets is not final and will be extended further by next PR.* + +### Removed +* **Java: remove deprecated `localServerId` option from Kafka config** [`#2738`](https://github.com/OpenLineage/OpenLineage/pull/2738) [@dolfinus](https://github.com/dolfinus) + *Removes `localServerId` from Kafka config, deprecated since 1.13.0.* +* **Java: remove deprecated `Transport.emit(String)`** [`#2737`](https://github.com/OpenLineage/OpenLineage/pull/2737) [@dolfinus](https://github.com/dolfinus) + *Removes `Transport.emit(String)` support, deprecated since 1.13.0.* +* **Spark: remove `spark-interfaces-scala` module** [`#2781`](https://github.com/OpenLineage/OpenLineage/pull/2781)[@ddebowczyk92](https://github.com/ddebowczyk92) + *Replaces the existing `spark-interfaces-scala` interfaces with new ones decoupled from the Scala binary version. Allows for improved integration in environments where one cannot guarantee the same version of `openlineage-java`.* + +### Changed +* **Spark: add log info when emitting lineage from Spark (following #2650)** [`#2769`](https://github.com/OpenLineage/OpenLineage/pull/2769) [@algorithmy1](https://github.com/algorithmy1) + *Enhances logging.* + +### Fixed +* **Flink: use `namespace.name` as Avro complex field type** [`#2763`](https://github.com/OpenLineage/OpenLineage/pull/2763) [@dolfinus](https://github.com/dolfinus) + *`namespace.name` is now used as Avro `"type"` of complex fields (record, enum, fixed).* +* **Java: repair empty dataset name** [`#2776`](https://github.com/OpenLineage/OpenLineage/pull/2776) [@kacpermuda](https://github.com/kacpermuda) + *The dataset name should not be empty.* +* **Spark: fix events emitted for `drop table` for Spark 3.4 and above** [`#2745`](https://github.com/OpenLineage/OpenLineage/pull/2745) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski)[@savannavalgi](https://github.com/savannavalgi) + *Includes dataset being dropped within the event, as it used to be prior to Spark 3.4.* +* **Spark, Flink: fix S3 dataset names** [`#2782`](https://github.com/OpenLineage/OpenLineage/pull/2782) [@dolfinus](https://github.com/dolfinus) + *Drops the leading slash from the object storage dataset name. Converts `s3a://` and `s3n://` schemes to `s3://`.* +* **Spark: fix Hive metastore namespace** [`#2761`](https://github.com/OpenLineage/OpenLineage/pull/2761) [@dolfinus](https://github.com/dolfinus) + *Fixes the dataset namespace for cases when the Hive metastore URL is set using `$SPARK_CONF_DIR/hive-site.xml`.* +* **Spark: fix NPE in column-level lineage** [`#2749`](https://github.com/OpenLineage/OpenLineage/pull/2749) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *The Spark agent now checks to determine if `cur.getDependencies()` is not null before adding dependencies.* +* **Spark: refactor `OpenLineageRunEventBuilder`** [`#2754`](https://github.com/OpenLineage/OpenLineage/pull/2754) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Adds a separate class containing all the input arguments to call `OpenLineageRunEventBuilder::buildRun`.* +* **Spark: fix `historyUrl` format** [`#2741`](https://github.com/OpenLineage/OpenLineage/pull/2741) [@dolfinus](https://github.com/dolfinus) + *Fixes the `historyUrl` format in `spark_applicationDetails`.* +* **SQL: allow self-recursive aliases** [`#2753`](https://github.com/OpenLineage/OpenLineage/pull/2753) [@mobuchowski](https://github.com/mobuchowski) + *Expressions like `select * from test_orders as test_orders` are now parsed properly.* diff --git a/versioned_docs/version-1.24.1/releases/1_18_0.md b/versioned_docs/version-1.24.1/releases/1_18_0.md new file mode 100644 index 0000000..4a069df --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/1_18_0.md @@ -0,0 +1,52 @@ +--- +title: 1.18.0 +sidebar_position: 9939 +--- + +# 1.18.0 - 2024-07-11 + +### Added +* **Spark: configurable integration test** [`#2755`](https://github.com/OpenLineage/OpenLineage/pull/2755) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Provides command line tool capable of running Spark integration tests that can be created without Java.* +* **Spark: OpenLineage Spark extension interfaces without runtime dependency hell** [`#2809`](https://github.com/OpenLineage/OpenLineage/pull/2809) [`#2837`](https://github.com/OpenLineage/OpenLineage/pull/2837) [@ddebowczyk92](https://github.com/ddebowczyk92) + *New Spark extension interfaces without runtime dependency hell. Includes a test to verify the integration is working properly.* +* **Spark: support latest versions 3.4.3 and 3.5.1.** [`#2743`](https://github.com/OpenLineage/OpenLineage/pull/2743) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Upgrades CI workflows to run tests against latest Spark versions: 3.4.2 -> 3.4.3 and 3.5.0 -> 3.5.1.* +* **Spark: add extraction of the masking property in column-level lineage** [`#2789`](https://github.com/OpenLineage/OpenLineage/pull/2789) [@tnazarew](https://github.com/tnazarew) + *Adds extraction of the masking property during collection of dependencies for `ColumnLineageDatasetFacet` creation.* +* **Spark: collect table name from `InsertIntoHadoopFsRelationCommand`** [`#2794`](https://github.com/OpenLineage/OpenLineage/pull/2794) [@dolfinus](https://github.com/dolfinus) + *Collects a table name for `INSERT INTO` command for tables created with `USING $fileFormat` syntax, like `USING orc`.* +* **Spark, Flink: add `PostgresJdbcExtractor`** [`#2806`](https://github.com/OpenLineage/OpenLineage/pull/2806) [@dolfinus](https://github.com/dolfinus) + *Adds the default `5432` port to Postgres namespaces.* +* **Spark, Flink: add `TeradataJdbcExtractor`** [`#2826`](https://github.com/OpenLineage/OpenLineage/pull/2826) [@dolfinus](https://github.com/dolfinus) + *Converts JDBC URLs like `jdbc:teradata/host/DBS_PORT=1024,DATABASE=somedb` to datasets with namespace `teradata://host:1024` and name `somedb.table`.* +* **Spark, Flink: add `MySqlJdbcExtractor`** [`#2825`](https://github.com/OpenLineage/OpenLineage/pull/2825) [@dolfinus](https://github.com/dolfinus) + *Handles different formats of MySQL JDBC URL, and produces datasets with consistent namespaces, like `mysql://host:port`.* +* **Spark, Flink: add `OracleJdbcExtractor`** [`#2824`](https://github.com/OpenLineage/OpenLineage/pull/2824) [@dolfinus](https://github.com/dolfinus) + *Handles simple Oracle JDBC URLs, like `oracle:thin:@//host:port/serviceName` and `oracle:thin@host:port:sid`, and converts each to a dataset with namespace `oracle://host:port` and name `sid.schema.table` or `serviceName.schema.table`.* +* **Spark: configurable test with Docker image provided** [`#2822`](https://github.com/OpenLineage/OpenLineage/pull/2822) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Extends the configurable integration test feature to enable getting the Docker image name as a name.* +* **Spark: Support Iceberg 1.4 on Spark 3.5.1.** [`#2838`](https://github.com/OpenLineage/OpenLineage/pull/2838) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Include Iceberg support for Spark 3.5. Fix column level lineage facet for `UNION` queries.* +* **Spec: add example for change in `#2756`** [`#2801`](https://github.com/OpenLineage/OpenLineage/pull/2801) [@Sheeri](https://github.com/Sheeri) + *Updates the `customLineage` facet test for the new syntax created in `#2756`.* + +### Changed +* **Spark: fallback to `spark.sql.warehouse.dir` as table namespace** [`#2767`](https://github.com/OpenLineage/OpenLineage/pull/2767) [@dolfinus](https://github.com/dolfinus) + *In cases when a metastore is not used, falls back to `spark.sql.warehouse.dir` or `hive.metastore.warehouse.dir` as table namespace, instead of duplicating the table's location.* + +### Fixed +* **Java: handle dashes in hostname for `JdbcExtractors`** [`#2830`](https://github.com/OpenLineage/OpenLineage/pull/2830) [@dolfinus](https://github.com/dolfinus) + *Proper handling of dashes in JDBC URL hosts.* +* **Spark: fix Glue symlinks formatting bug** [`#2807`](https://github.com/OpenLineage/OpenLineage/pull/2807) [@Akash2351](https://github.com/Akash2351) + *Fixes Glue symlinks with config parsing for Glue `catalogid`.* +* **Spark, Flink: fix DBFS namespace format** [`#2800`](https://github.com/OpenLineage/OpenLineage/pull/2800) [@dolfinus](https://github.com/dolfinus) + *Fixes the DBFS namespace format.* +* **Spark: fix Glue naming format** [`#2766`](https://github.com/OpenLineage/OpenLineage/pull/2766) [@dolfinus](https://github.com/dolfinus) + *Changes the AWS Glue namespace to match Glue ARN documentation.* +* **Spark: fix Iceberg dataset location** [`#2797`](https://github.com/OpenLineage/OpenLineage/pull/2797) [@dolfinus](https://github.com/dolfinus) + *Fixes Iceberg dataset namespace: instead of `file:/some/path/database.table` uses `file:/some/path/database/table`. For dataset TABLE symlink, uses warehouse location instead of database location.* +* **Spark: fix NPE and incorrect comment** [`#2827`](https://github.com/OpenLineage/OpenLineage/pull/2827) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Fixes an error caused by a recent upgrade of Spark versions that did not break existing tests.* +* **Spark: convert scheme and authority to lowercase in `JdbcLocation`** [`#2831`](https://github.com/OpenLineage/OpenLineage/pull/2831) [@dolfinus](https://github.com/dolfinus) + *Converts valid JDBC URL scheme and authority to lowercase, leaving intact instance/database name, as different databases have different default case and case-sensitivity rules.* diff --git a/versioned_docs/version-1.24.1/releases/1_19_0.md b/versioned_docs/version-1.24.1/releases/1_19_0.md new file mode 100644 index 0000000..a123273 --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/1_19_0.md @@ -0,0 +1,31 @@ +--- +title: 1.19.0 +sidebar_position: 9938 +--- + +# 1.19.0 - 2024-07-22 + +### Added +* **Airflow: add `log_url` to `AirflowRunFacet`** [`#2852`](https://github.com/OpenLineage/OpenLineage/pull/2852) [@dolfinus](https://github.com/dolfinus) + *Adds taskinstance's `log_url` field to `AirflowRunFacet`.* +* **Spark: add handling for `Generate`** [`#2856`](https://github.com/OpenLineage/OpenLineage/pull/2856) [@tnazarew](https://github.com/tnazarew) + *Adds handling for `Generate`-type nodes of a logical plan (e.g., explode operations).* +* **Java: add `DerbyJdbcExtractor`** [`#2869`](https://github.com/OpenLineage/OpenLineage/pull/2869) [@dolfinus](https://github.com/dolfinus) + *Adds `JdbcExtractor` implementation for Derby database. As this is a file-based DBMS, its Dataset namespace is `file` and name is an absolute path to a database file.* +* **Spark: verify bytecode version of the built jar.** [`#2859`](https://github.com/OpenLineage/OpenLineage/pull/2859) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Extends the `JarVerifier` plugin to ensure all compiled classes have a bytecode version of Java 8 or lower.* +* **Spark: add Kafka streaming source support** [`#2851`](https://github.com/OpenLineage/OpenLineage/pull/2851) [@d-m-h](https://github.com/d-m-h) [@imbruced](https://github.com/Imbruced) + *Adds support for Kafka streaming sources to Kafka streaming sinks. Inputs and outputs are now included in lineage events.* + +### Fixed +* **Airflow: replace datetime.now with airflow.utils.timezone.utcnow** [`#2865`](https://github.com/OpenLineage/OpenLineage/pull/2865) [@kacpermuda](https://github.com/kacpermuda) + *Fixes missing timezone information in task FAIL events.* +* **Spark: remove shaded dependency in `ColumnLevelLineageBuilder`** [`#2850`](https://github.com/OpenLineage/OpenLineage/pull/2850) [@tnazarew](https://github.com/tnazarew) + *Removes the shaded `Streams` dependency in `ColumnLevelLineageBuilder` causing a `ClassNotFoundException`.* +* **Spark: make Delta dataset symlink consistent with non-Delta tables** [`#2863`](https://github.com/OpenLineage/OpenLineage/pull/2863) [@dolfinus](https://github.com/dolfinus) + *Makes dataset symlinks for Delta and non-Delta tables consistent.* +* **Spark: use Table's properties during column-level lineage construction** [`#2855`](https://github.com/OpenLineage/OpenLineage/pull/2855) [@ddebowczyk92](https://github.com/ddebowczyk92) + *Fixes `PlanUtils3` so Dataset identifier information based on a Table's properties is also retrieved during the construction of column-level lineage.* +* **Spark: extract job name creation to providers** [`#2861`](https://github.com/OpenLineage/OpenLineage/pull/2861) [@arturowczarek](https://github.com/arturowczarek) + *The integration now detects if the `spark.app.name` was autogenerated by Glue and uses the Glue job name in such cases. Also, each job name provisioning strategy is now extracted to a separate provider.* + \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/releases/1_1_0.md b/versioned_docs/version-1.24.1/releases/1_1_0.md new file mode 100644 index 0000000..338e3e7 --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/1_1_0.md @@ -0,0 +1,31 @@ +--- +title: 1.1.0 +sidebar_position: 9956 +--- + +# 1.1.0 - 2023-08-23 + +### Added +* **Flink: create Openlineage configuration based on Flink configuration** [`#2033`](https://github.com/OpenLineage/OpenLineage/pull/2033) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Flink configuration entries starting with* `openlineage.*` *are passed to the Openlineage client.* +* **Java: add Javadocs to the Java client** [`#2004`](https://github.com/OpenLineage/OpenLineage/pull/2004) [@julienledem](https://github.com/julienledem) + *The client was missing some Javadocs.* +* **Spark: append output dataset name to a job name** [`#2036`](https://github.com/OpenLineage/OpenLineage/pull/2036) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Solves the problem of multiple jobs writing to different datasets while having the same job name. The feature is enabled by default and results in different job names. It can be disabled by setting `spark.openlineage.jobName.appendDatasetName` to `false`.* + *Unifies job names generated on the Databricks platform (using a dot job part separator instead of an underscore). The default behaviour can be altered with `spark.openlineage.jobName.replaceDotWithUnderscore`.* +* **Spark: support Spark 3.4.1** [`#2057`](https://github.com/OpenLineage/OpenLineage/pull/2057) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Bumps the latest Spark version to be covered in integration tests.* + +### Fixed +* **Airflow: do not use database as fallback when no schema parsed** [`#2023`](https://github.com/OpenLineage/OpenLineage/pull/2023) [@mobuchowski](https://github.com/mobuchowski) + *Sets the schema to `None` in `TablesHierarchy` to skip filtering on the schema level in the information schema query.* +* **Flink: fix a bug when getting schema for `KafkaSink`** [`#2042`](https://github.com/OpenLineage/OpenLineage/pull/2042) [@pentium3](https://github.com/pentium3) + *Fixes the incomplete schema from `KafkaSinkVisitor` by changing the `KafkaSinkWrapper` to catch schemas of type `AvroSerializationSchema`.* +* **Spark: filter `CreateView` events** [`#1968`](https://github.com/OpenLineage/OpenLineage/pull/1968)[`#1987`](https://github.com/OpenLineage/OpenLineage/pull/1987) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Clears events generated by logical plans having `CreateView` nodes as root.* +* **Spark: fix `MERGE INTO` for delta tables identified by physical locations** [`#2026`](https://github.com/OpenLineage/OpenLineage/pull/2026) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Delta tables identified by physical locations were not properly recognized.* +* **Spark: fix incorrect naming of JDBC datasets** [`#2035`](https://github.com/OpenLineage/OpenLineage/pull/2035) [@mobuchowski](https://github.com/mobuchowski) + *Makes the namespace generated by the JDBC/Spark connector conform to the naming schema in the spec.* +* **Spark: fix ignored event `adaptive_spark_plan` in Databricks** [`#2061`](https://github.com/OpenLineage/OpenLineage/pull/2061) [@algorithmy1](https://github.com/algoithmy1) + *Removes `adaptive_spark_plan` from the `excludedNodes` in `DatabricksEventFilter`.* \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/releases/1_20_5.md b/versioned_docs/version-1.24.1/releases/1_20_5.md new file mode 100644 index 0000000..57bf53f --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/1_20_5.md @@ -0,0 +1,50 @@ +--- +title: 1.20.5 +sidebar_position: 9937 +--- + +# 1.20.5 - 2024-08-23 + +### Added +* **Python: add `CompositeTransport`** [`#2925`](https://github.com/OpenLineage/OpenLineage/pull/2925) [@JDarDagran](https://github.com/JDarDagran) + *Adds a `CompositeTransport` that can accept other transport configs to instantiate transports and use them to emit events.* +* **Spark: compile & test Spark integration on Java 17** [`#2828`](https://github.com/OpenLineage/OpenLineage/pull/2828) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *The Spark integration is always compiled with Java 17, while tests are running on both Java 8 and Java 17 according to the configuration.* +* **Spark: support preview release of Spark 4.0** [`#2854`](https://github.com/OpenLineage/OpenLineage/pull/2854) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Includes the Spark 4.0 preview release in the integration tests.* +* **Spark: add handling for `Window`** [`#2901`](https://github.com/OpenLineage/OpenLineage/pull/2901) [@tnazarew](https://github.com/tnazarew) + *Adds handling for `Window`-type nodes of a logical plan.* +* **Spark: extract and send events with raw SQL from Spark** [`#2913`](https://github.com/OpenLineage/OpenLineage/pull/2913) [@Imbruced](https://github.com/Imbruced) + *Adds a parser that traverses `QueryExecution` to get the SQL query used from the SQL field with a BFS algorithm.* +* **Spark: support Mongostream source** [`#2887`](https://github.com/OpenLineage/OpenLineage/pull/2887) [@Imbruced](https://github.com/Imbruced) + *Adds a Mongo streaming visitor and tests.* +* **Spark: new mechanism for disabling facets** [`#2912`](https://github.com/OpenLineage/OpenLineage/pull/2912) [@arturowczarek](https://github.com/arturowczarek) + *The mechanism makes `FacetConfig` accept the disabled flag for any facet instead of passing them as a list.* +* **Spark: support Kinesis source** [`#2906`](https://github.com/OpenLineage/OpenLineage/pull/2906) [@Imbruced](https://github.com/Imbruced) + *Adds a Kinesis class handler in the streaming source builder.* +* **Spark: extract `DatasetIdentifier` from extension `LineageNode`** [`#2900`](https://github.com/OpenLineage/OpenLineage/pull/2900) [@ddebowczyk92](https://github.com/ddebowczyk92) + *Adds support for cases in which `LogicalRelation` has a grandChild node that implements the `LineageRelation` interface.* +* **Spark: extract Dataset from underlying `BaseRelation`** [`#2893`](https://github.com/OpenLineage/OpenLineage/pull/2893) [@ddebowczyk92](https://github.com/ddebowczyk92) + *`DatasetIdentifier` is now extracted from the underlying node of `LogicalRelation`.* +* **Spark: add descriptions and Marquez UI to Docker Compose file** [`#2889`](https://github.com/OpenLineage/OpenLineage/pull/2889) [@jonathanlbt1](https://github.com/jonathanlbt1) + *Adds the `marquez-web` service to docker-compose.yml.* + +### Fixed +* **Proxy: bug fixed on error messages descriptions** [`#2880`](https://github.com/OpenLineage/OpenLineage/pull/2880) [@jonathanlbt1](https://github.com/jonathanlbt1) + *Improves error logging.* +* **Proxy: update Docker image for Fluentd 1.17** [`#2877`](https://github.com/OpenLineage/OpenLineage/pull/2877) [@jonathanlbt1](https://github.com/jonathanlbt1) + *Upgrades the Fluentd version.* +* **Spark: fix issue with Kafka source when saving with `for each` batch method** [`#2868`](https://github.com/OpenLineage/OpenLineage/pull/2868) [@imbruced](https://github.com/Imbruced) + *Fixes an issue when Spark is in streaming mode and input for Kafka was not present in the event.* +* **Spark: properly set ARN in namespace for Iceberg Glue symlinks** [`#2943`](https://github.com/OpenLineage/OpenLineage/pull/2943) [@arturowczarek](https://github.com/arturowczarek) + *Makes `IcebergHandler` support Glue catalog tables and create the symlink using the code from `PathUtils`.* +* **Spark: accept any provider for AWS Glue storage format** [`#2917`](https://github.com/OpenLineage/OpenLineage/pull/2917) [@arturowczarek](https://github.com/arturowczarek) + *Makes the AWS Glue ARN generating method accept every format (including Parquet), not only Hive SerDe.* +* **Spark: return valid JSON for failed logical plan serialization** [`#2892`](https://github.com/OpenLineage/OpenLineage/pull/2892) [@arturowczarek](https://github.com/arturowczarek) + *The `LogicalPlanSerializer` now returns `` for failed serialization instead of an empty string.* +* **Spark: extract legacy column lineage visitors loader** [`#2883`](https://github.com/OpenLineage/OpenLineage/pull/2883) [@arturowczarek](https://github.com/arturowczarek) + *Refactors `CustomCollectorsUtils` for improved readability.* +* **Spark: add Kafka input source when writing in `foreach` batch mode** [`#2868`](https://github.com/OpenLineage/OpenLineage/pull/2868) [@Imbruced](https://github.com/Imbruced) + *Fixes a bug keeping Kafka input sources from being produced.* +* **Spark: extract `DatasetIdentifier` from `SaveIntoDataSourceCommandVisitor` options** [`#2934`](https://github.com/OpenLineage/OpenLineage/pull/2934) [@ddebowczyk92](https://github.com/ddebowczyk92) + *Extracts `DatasetIdentifier` from command's options instead of relying on `p.createRelation(sqlContext, command.options())`, which is a heavy operation for `JdbcRelationProvider`.* diff --git a/versioned_docs/version-1.24.1/releases/1_21_1.md b/versioned_docs/version-1.24.1/releases/1_21_1.md new file mode 100644 index 0000000..326d45f --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/1_21_1.md @@ -0,0 +1,24 @@ +--- +title: 1.21.1 +sidebar_position: 9936 +--- + +# 1.21.1 - 2024-08-29 + +### Added +* **Spec: add GCP Dataproc facet** [`#2987`](https://github.com/OpenLineage/OpenLineage/pull/2987) [@tnazarew](https://github.com/tnazarew) + *Registers the Google Cloud Platform Dataproc run facet.* + +### Fixed +* **Airflow: update SQL integration code to work with latest sqlparser-rs main** [`#2983`](https://github.com/OpenLineage/OpenLineage/pull/2983) [@kacpermuda](https://github.com/kacpermuda) + *Adjusts the SQL integration after our sqlparser-rs fork has been updated to the latest main.* +* **Spark: fix AWS Glue jobs naming for SQL events** [`#3001`](https://github.com/OpenLineage/OpenLineage/pull/3001) [@arturowczarek](https://github.com/arturowczarek) + *SQL events now properly use the names of the jobs retrieved from AWS Glue.* +* **Spark: fix issue with column lineage when using delta merge into command** [`#2986`](https://github.com/OpenLineage/OpenLineage/pull/2986) [@Imbruced](https://github.com/Imbruced) + *A view instance of a node is now included when gathering data sources for input columns.* +* **Spark: minor Spark filters refactor** [`#2990`](https://github.com/OpenLineage/OpenLineage/pull/2990) [@arturowczarek](https://github.com/arturowczarek) + *Fixes a number of minor issues.* +* **Spark: Iceberg tables in AWS Glue have slashes instead of dots in symlinks** [`#2984`](https://github.com/OpenLineage/OpenLineage/pull/2984) [@arturowczarek](https://github.com/arturowczarek) + *They should use slashes and the prefix `table/`.* +* **Spark: lineage for Iceberg datasets that are present outside of Spark's catalog is now present** [`#2937`](https://github.com/OpenLineage/OpenLineage/pull/2937) [@d-m-h](https://github.com/d-m-h) + *Previously, reading Iceberg datasets outside the configured Spark catalog prevented the datasets from being present in the `inputs` property of the `RunEvent`.* diff --git a/versioned_docs/version-1.24.1/releases/1_22_0.md b/versioned_docs/version-1.24.1/releases/1_22_0.md new file mode 100644 index 0000000..74bff79 --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/1_22_0.md @@ -0,0 +1,24 @@ +--- +title: 1.22.0 +sidebar_position: 9935 +--- + +# 1.22.0 - 2024-09-05 + +### Added +* **SQL: add support for `USE` statement with different syntaxes** [`#2944`](https://github.com/OpenLineage/OpenLineage/pull/2944) [@kacpermuda](https://github.com/kacpermuda) + *Adjusts our Context so that it can use the new support for this statement in the parser and pass it to a number of queries.* +* **Spark: add script to build Spark dependencies** [`#3044`](https://github.com/OpenLineage/OpenLineage/pull/3044) [@arturowczarek](https://github.com/arturowczarek) + *Adds a script to rebuild dependencies automatically following releases.* +* **Website: versionable docs** [`#3007`](https://github.com/OpenLineage/OpenLineage/pull/3007) [`#3023`](https://github.com/OpenLineage/OpenLineage/pull/3023) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Adds a GitHub action that creates a new Docusaurus version on a tag push, verifiable using the openlineage-site repo. Implements a monorepo approach in a new `website` directory.* + +### Fixed +* **SQL: add support for `SingleQuotedString` in `Identifier()`** [`#3035`](https://github.com/OpenLineage/OpenLineage/pull/3035) [@kacpermuda](https://github.com/kacpermuda) + *Single quoted strings were being treated differently than strings with no quotes, double quotes, or backticks.* +* **SQL: support `IDENTIFIER` function instead of treating it like table name** [`#2999`](https://github.com/OpenLineage/OpenLineage/pull/2999) [@kacpermuda](https://github.com/kacpermuda) + *Adds support for this identifier in SELECT, MERGE, UPDATE, and DELETE statements. For now, only static identifiers are supported. When a variable is used, this table is removed from lineage to avoid emitting incorrect lineage.* +* **Spark: fix issue with only one table in inputs from SQL query while reading from JDBC** [`#2918`](https://github.com/OpenLineage/OpenLineage/pull/2918) [@Imbruced](https://github.com/Imbruced) + *Events created did not contain the correct input table when the query contained multiple tables.* +* **Spark: fix AWS Glue jobs naming for RDD events** [`#3020`](https://github.com/OpenLineage/OpenLineage/pull/3020) [@arturowczarek](https://github.com/arturowczarek) + *The naming for RDD jobs now uses the same code as SQL and Application events.* diff --git a/versioned_docs/version-1.24.1/releases/1_2_2.md b/versioned_docs/version-1.24.1/releases/1_2_2.md new file mode 100644 index 0000000..64d6336 --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/1_2_2.md @@ -0,0 +1,35 @@ +--- +title: 1.2.2 +sidebar_position: 9955 +--- + +# 1.2.2 - 2023-09-20 + +### Added +* **Spark: publish the `ProcessingEngineRunFacet` as part of the normal operation of the `OpenLineageSparkEventListener`** [`#2089`](https://github.com/OpenLineage/OpenLineage/pull/2089) [@d-m-h](https://github.com/d-m-h) + *Publishes the spec-defined `ProcessEngineRunFacet` alongside the custom `SparkVersionFacet` (for now).* + *The `SparkVersionFacet` is deprecated and will be removed in a future release.* +* **Spark: capture and emit `spark.databricks.clusterUsageTags.clusterAllTags` variable from databricks environment** [`#2099`](https://github.com/OpenLineage/OpenLineage/pull/2099) [@Anirudh181001](https://github.com/Anirudh181001) + *Adds `spark.databricks.clusterUsageTags.clusterAllTags` to the list of environment variables captured from databricks.* + +### Fixed +* **Common: support parsing dbt_project.yml without target-path** [`#2106`](https://github.com/OpenLineage/OpenLineage/pull/2106) [@tatiana](https://github.com/tatiana) + *As of dbt v1.5, usage of target-path in the dbt_project.yml file has been deprecated, now preferring a CLI flag or env var. It will be removed in a future version. This allows users to run `DbtLocalArtifactProcessor` in dbt projects that do not declare target-path.* +* **Proxy: fix Proxy chart** [`#2091`](https://github.com/OpenLineage/OpenLineage/pull/2091) [@harels](https://github.com/harels) + *Includes the proper image to deploy in the helm chart.* +* **Python: fix serde filtering** [`#2044`](https://github.com/OpenLineage/OpenLineage/pull/2044) [@xli-1026](https://github.com/xli-1026) + *Fixes the bug causing values in list objects to be filtered accidentally.* +* **Python: use non-deprecated `apiKey` if loading it from env variables** [`@2029`](https://github.com/OpenLineage/OpenLineage/pull/2029) [@mobuchowski](https://github.com/mobuchowski) + *Changes `api_key` to `apiKey` in `create_token_provider`.* +* **Spark: Improve RDDs on S3 integration.** [`#2039`](https://github.com/OpenLineage/OpenLineage/pull/2039) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Prepares integration test to access S3, fixes input dataset duplicates and includes other minor fixes.* +* **Flink: prevent sending `running` events after job completes** [`#2075`](https://github.com/OpenLineage/OpenLineage/pull/2075) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Flink checkpoint tracking thread was not getting stopped properly on job complete.* +* **Spark & Flink: Unify dataset naming from URI objects** [`#2083`](https://github.com/OpenLineage/OpenLineage/pull/2083) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Makes sure Spark and Flink generate same dataset identifiers for the same datasets by having a single implementation to generate dataset namespace and name.* +* **Spark: Databricks improvements** [`#2076`](https://github.com/OpenLineage/OpenLineage/pull/2076) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Filters unwanted events on databricks and adds an integration test to verify this. Adds integration tests to verify dataset naming on databricks runtime is correct when table location is specified. Adds integration test for wide transformation on delta tables.* + +### Removed +* **SQL: remove sqlparser dependency from iface-java and iface-py** [`#2090`](https://github.com/OpenLineage/OpenLineage/pull/2090) [@JDarDagran](https://github.com/JDarDagran) + *Removes the dependency due to a breaking change in the latest release of the parser.* \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/releases/1_3_1.md b/versioned_docs/version-1.24.1/releases/1_3_1.md new file mode 100644 index 0000000..60cd99b --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/1_3_1.md @@ -0,0 +1,24 @@ +--- +title: 1.3.1 +sidebar_position: 9954 +--- + +# 1.3.1 - 2023-10-03 + +### Added +* **Airflow: add some basic stats to the Airflow integration** [`#1845`](https://github.com/OpenLineage/OpenLineage/pull/1845) [@harels](https://github.com/harels) + *Uses the statsd component that already exists in the Airflow codebase and wraps the section that emits to event with a timer, as well as emitting a counter for exceptions in sending the event.* +* **Airflow: add columns as schema facet for `airflow.lineage.Table` (if defined)** [`#2138`](https://github.com/OpenLineage/OpenLineage/pull/2138) [@erikalfthan](https://github.com/erikalfthan) + *Adds columns (if set) from `airflow.lineage.Table` inlets/outlets to the OpenLineage Dataset.* +* **DBT: add SQLSERVER to supported dbt profile types** [`#2136`](https://github.com/OpenLineage/OpenLineage/pull/2136) [@erikalfthan](https://github.com/erikalfthan) + *Adds support for dbt-sqlserver, solving [#2129](https://github.com/OpenLineage/OpenLineage/issues/2129).* +* **Spark: support for latest 3.5** [`#2118`](https://github.com/OpenLineage/OpenLineage/pull/2118) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Integration tests are now run on Spark 3.5. Also upgrades 3.3 branch to 3.3.3. Please note that `delta` and `iceberg` are not supported for Spark `3.5` at this time.* + +### Fixed +* **Airflow: fix find-links path in tox** [`#2139`](https://github.com/OpenLineage/OpenLineage/pull/2139) [@JDarDagran](https://github.com/JDarDagran) + *Fixes a broken link.* +* **Airflow: add more graceful logging when no OpenLineage provider installed** [`#2141`](https://github.com/OpenLineage/OpenLineage/pull/2141) [@JDarDagran](https://github.com/JDarDagran) + *Recognizes a failed import of `airflow.providers.openlineage` and adds more graceful logging to fix a corner case.* +* **Spark: fix bug in PathUtils' prepareDatasetIdentifierFromDefaultTablePath(CatalogTable) to correctly preserve scheme from CatalogTable's location** [`#2142`](https://github.com/OpenLineage/OpenLineage/pull/2142) [@d-m-h](https://github.com/d-m-h) + *Previously, the `prepareDatasetIdentifierFromDefaultTablePath` method would override the scheme with the value of "file" when constructing a dataset identifier. It now uses the scheme of the `CatalogTable`'s URI for this. Thank you @pawel-big-lebowski for the quick triage and suggested fix.* \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/releases/1_4_1.md b/versioned_docs/version-1.24.1/releases/1_4_1.md new file mode 100644 index 0000000..92bdc9d --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/1_4_1.md @@ -0,0 +1,16 @@ +--- +title: 1.4.1 +sidebar_position: 9953 +--- + +# 1.4.1 - 2023-10-09 + +### Added +* **Client: allow setting client's endpoint via environment variable** [`#2151`](https://github.com/OpenLineage/OpenLineage/pull/2151) [@mars-lan](https://github.com/mars-lan) + *Enables setting this endpoint via environment variable because creating the client manually in Airflow is not possible.* +* **Flink: expand Iceberg source types** [`#2149`](https://github.com/OpenLineage/OpenLineage/pull/2149) [@HuangZhenQiu](https://github.com/HuangZhenQiu) + *Adds support for `FlinkIcebergSource` and `FlinkIcebergTableSource` for Flink Iceberg lineage.* +* **Spark: add debug facet** [`#2147`](https://github.com/OpenLineage/OpenLineage/pull/2147) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *An extra run facet containing some system details (e.g., OS, Java, Scala version), classpath (e.g., package versions, jars included in the Spark job), SparkConf (like openlineage entries except auth, specified extensions, etc.) and LogicalPlan details (execution tree nodes' names) are added to events emitted. SparkConf setting `spark.openlineage.debugFacet=enabled` needs to be set to include the facet. By default, the debug facet is disabled.* +* **Spark: enable Nessie REST catalog** [`#2165`](https://github.com/OpenLineage/OpenLineage/pull/2165) [@julwin](https://github.com/julwin) + *Adds support for Nessie catalog in Spark.* \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/releases/1_5_0.md b/versioned_docs/version-1.24.1/releases/1_5_0.md new file mode 100644 index 0000000..6bd18e1 --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/1_5_0.md @@ -0,0 +1,30 @@ +--- +title: 1.5.0 +sidebar_position: 9952 +--- + +# 1.5.0 - 2023-11-02 + +### Added +* **Flink: add Flink lineage for Cassandra Connectors** [`#2175`](https://github.com/OpenLineage/OpenLineage/pull/2175) [@HuangZhenQiu](https://github.com/HuangZhenQiu) + *Adds Flink Cassandra source and sink visitors and Flink Cassandra Integration test.* +* **Spark: support `rdd` and `toDF` operations available in Spark Scala API** [`#2188`](https://github.com/OpenLineage/OpenLineage/pull/2188) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Includes the first Scala integration test, fixes `ExternalRddVisitor` and adds support for extracting inputs from `MapPartitionsRDD` and `ParallelCollectionRDD` plan nodes.* +* **Spark: support Databricks Runtime 13.3** [`#2185`](https://github.com/OpenLineage/OpenLineage/pull/2185) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Modifies the Spark integration to support the latest Databricks Runtime version.* + +### Changed +* **Airflow: loosen attrs and requests versions** [`#2107`](https://github.com/OpenLineage/OpenLineage/pull/2107) [@JDarDagran](https://github.com/JDarDagran) + *Lowers the version requirements for attrs and requests and removes an unnecessary dependency.* +* **dbt: render yaml configs lazily** [`#2221`](https://github.com/OpenLineage/OpenLineage/pull/2221) [@JDarDagran](https://github.com/JDarDagran) + *Don't render each entry in yaml files at start.* + +### Fixed +* **Airflow/Athena: change dataset name to its location** [`#2167`](https://github.com/OpenLineage/OpenLineage/pull/2167) [@sophiely](https://github.com/sophiely) + *Replaces the dataset and namespace with the data's physical location for more complete lineage across integrations.* +* **Python client: skip redaction in column lineage facet** [`#2177`](https://github.com/OpenLineage/OpenLineage/pull/2177) [@JDarDagran](https://github.com/JDarDagran) + *Redacted fields in `ColumnLineageDatasetFacetFieldsAdditionalInputFields` are now skipped.* +* **Spark: unify dataset naming for RDD jobs and Spark SQL** [`#2181`](https://github.com/OpenLineage/OpenLineage/pull/2181) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Use the same mechanism for RDD jobs to extract dataset identifier as used for Spark SQL.* +* **Spark: ensure a single `START` and a single `COMPLETE` event are sent** [`#2103`](https://github.com/OpenLineage/OpenLineage/pull/2103) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *For Spark SQL at least four events are sent triggered by different SparkListener methods. Each of them is required and used to collect facets unavailable elsewhere. However, there should be only one `START` and `COMPLETE` events emitted. Other events should be sent as `RUNNING`. Please keep in mind that Spark integration remains stateless to limit the memory footprint, and it is the backend responsibility to merge several Openlineage events into a meaningful snapshot of metadata changes.* \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/releases/1_6_2.md b/versioned_docs/version-1.24.1/releases/1_6_2.md new file mode 100644 index 0000000..4bfac6b --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/1_6_2.md @@ -0,0 +1,28 @@ +--- +title: 1.6.2 +sidebar_position: 9951 +--- + +# 1.6.2 - 2023-12-07 + +### Added +* **Dagster: support Dagster 1.5.x** [`#2220`](https://github.com/OpenLineage/OpenLineage/pull/2220) [@tsungchih](https://github.com/tsungchih) + *Gets event records for each target Dagster event type to support Dagster version 0.15.0+.* +* **Dbt: add a new command `dbt-ol send-events` to send metadata of the last run without running the job** [`#2285`](https://github.com/OpenLineage/OpenLineage/pull/2285) [@sophiely](https://github.com/sophiely) + *Adds a new command to send events to OpenLineage according to the latest metadata generated without running any dbt command.* +* **Flink: add option for Flink job listener to read from Flink conf** [`#2229`](https://github.com/OpenLineage/OpenLineage/pull/2229) [@ensctom](https://github.com/ensctom) + *Adds option for the Flink job listener to read jobnames and namespaces from Flink conf.* +* **Spark: get column-level lineage from JDBC dbtable option** [`#2284`](https://github.com/OpenLineage/OpenLineage/pull/2284) [@mobuchowski](https://github.com/mobuchowski) + *Adds support for dbtable, enables lineage in the case of single input columns, and improves dataset naming.* +* **Spec: introduce `JobTypeJobFacet` to contain additional job related information**[`#2241`](https://github.com/OpenLineage/OpenLineage/pull/2241) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *New `JobTypeJobFacet` contains the processing type such as `BATCH|STREAMING`, integration via `SPARK|FLINK|...` and job type in `QUERY|COMMAND|DAG|...`.* +* **SQL: add quote information from sqlparser-rs** [`#2259`](https://github.com/OpenLineage/OpenLineage/pull/2259) [@JDarDagran](https://github.com/JDarDagran) + *Adds quote information from sqlparser-rs.* + +### Fixed +* **Spark: update Jackson dependency to resolve `CVE-2022-1471`** [`#2185`](https://github.com/OpenLineage/OpenLineage/pull/2185) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Updates Gradle for Spark and Flink to 8.1.1. Upgrade Jackson `2.15.3`.* +* **Flink: avoid relying on Guava which can be missing during production runtime** [`#2296`](https://github.com/OpenLineage/OpenLineage/pull/2296) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Removes usage of Guava ImmutableList.* +* **Spark: exclude `commons-logging` transitive dependency from published jar** [`#2297`](https://github.com/OpenLineage/OpenLineage/pull/2297) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Ensures `commons-logging` is not shipped as this can lead to a version mismatch on the user's side.* \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/releases/1_7_0.md b/versioned_docs/version-1.24.1/releases/1_7_0.md new file mode 100644 index 0000000..567bf51 --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/1_7_0.md @@ -0,0 +1,35 @@ +--- +title: 1.7.0 +sidebar_position: 9950 +--- + +# 1.7.0 - 2023-12-21 + +_COMPATIBILITY NOTICE_ +Starting in 1.7.0, the Airflow integration will no longer support Airflow versions `>=2.8.0`. +Please use the [OpenLineage Airflow Provider](https://airflow.apache.org/docs/apache-airflow-providers-openlineage/stable/index.html) instead. + +### Added +* **Airflow: add parent run facet to `COMPLETE` and `FAIL` events in Airflow integration** [`#2320`](https://github.com/OpenLineage/OpenLineage/pull/2320) [@kacpermuda](https://github.com/kacpermuda) + *Adds a parent run facet to all events in the Airflow integration.* + +### Fixed +* **Airflow: repair up.sh for MacOS** [`#2316`](https://github.com/OpenLineage/OpenLineage/pull/2316) [`#2318`](https://github.com/OpenLineage/OpenLineage/pull/2318) [@kacpermuda](https://github.com/kacpermuda) + *Some scripts were not working well on MacOS. This adjusts them.* +* **Airflow: repair `run_id` for `FAIL` event in Airflow 2.6+** [`#2305`](https://github.com/OpenLineage/OpenLineage/pull/2305) [@kacpermuda](https://github.com/kacpermuda) + *The `Run_id` in a `FAIL` event was different than in the `START` event for Airflow 2.6+.* +* **Flink: open Iceberg `TableLoader` before loading a table** [`#2314`](https://github.com/OpenLineage/OpenLineage/pull/2314) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Fixes a potential `NullPointerException` in 1.17 when dealing with Iceberg sinks.* +* **Flink: name Kafka datasets according to the naming convention** [`#2321`](https://github.com/OpenLineage/OpenLineage/pull/2321) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Adds a `kafka://` prefix to Kafka topic datasets' namespaces.* +* **Flink: fix properties within `JobTypeJobFacet`** [`#2325`](https://github.com/OpenLineage/OpenLineage/pull/2325) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Fixes properties assignment in the Flink visitor.* +* **Spark: fix `commons-logging` relocate in target jar** [`#2319`](https://github.com/OpenLineage/OpenLineage/pull/2319) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Avoids relocating a dependency that was getting excluded from the jar.* +* **Spec: fix inconsistency with Redshift authority format** [`#2315`](https://github.com/OpenLineage/OpenLineage/pull/2315) [@davidjgoss](https://github.com/davidjgoss) + *Amends the `Authority` format for consistency with other references in the same section.* + +### Removed +* **Airflow: remove Airflow 2.8+ support** [`#2330`](https://github.com/OpenLineage/OpenLineage/pull/2330) [@kacpermuda](https://github.com/kacpermuda) + *If the Airflow version is `>=2.8.0`, the Airflow integration's plugin does not import the integration's listener, disabling the external integration.* + *Please use the [OpenLineage Airflow Provider](https://airflow.apache.org/docs/apache-airflow-providers-openlineage/stable/index.html) instead.* diff --git a/versioned_docs/version-1.24.1/releases/1_8_0.md b/versioned_docs/version-1.24.1/releases/1_8_0.md new file mode 100644 index 0000000..826ac95 --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/1_8_0.md @@ -0,0 +1,42 @@ +--- +title: 1.8.0 +sidebar_position: 9949 +--- + +# 1.8.0 - 2024-01-22 + +### Added +* **Flink: support Flink 1.18** [`#2366`](https://github.com/OpenLineage/OpenLineage/pull/2366) [@HuangZhenQiu](https://github.com/HuangZhenQiu) + *Adds support for the latest Flink version with 1.17 used for Iceberg Flink runtime and Cassandra Connector as these do not yet support 1.18.* +* **Spark: add Gradle plugins to simplify the build process to support Scala 2.13** [`#2376`](https://github.com/OpenLineage/OpenLineage/pull/2376) [@d-m-h](https://github.com/d-m-h) + *Defines a set of Gradle plugins to configure the modules and reduce duplication. +* **Spark: support multiple Scala versions `LogicalPlan` implementation** [`#2361`](https://github.com/OpenLineage/OpenLineage/pull/2361) [@mattiabertorello](https://github.com/mattiabertorello) + *In the LogicalPlanSerializerTest class, the implementation of the LogicalPlan interface is different between Scala 2.12 and Scala 2.13. In detail, the IndexedSeq changes package from the scala.collection to scala.collection.immutable. This implements both of the methods necessary in the two versions.* +* **Spark: Use ScalaConversionUtils to convert Scala and Java collections** [`#2357`](https://github.com/OpenLineage/OpenLineage/pull/2357) [@mattiabertorello](https://github.com/mattiabertorello) + *This initial step is to start supporting compilation for Scala 2.13 in the 3.2+ Spark versions. Scala 2.13 changed the default collection to immutable, the methods to create an empty collection, and the conversion between Java and Scala. This causes the code to not compile between 2.12 and 2.13. This replaces the usage of direct Scala collection methods (like creating an empty object) and conversions utils with `ScalaConversionUtils` methods that will support cross-compilation.* +* **Spark: support `MERGE INTO` queries on Databricks** [`#2348`](https://github.com/OpenLineage/OpenLineage/pull/2348) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Supports custom plan nodes used when running `MERGE INTO` queries on Databricks runtime.* +* **Spark: Support Glue catalog in iceberg** [`#2283`](https://github.com/OpenLineage/OpenLineage/pull/2283) [@nataliezeller1](https://github.com/nataliezeller1) + *Adds support for the Glue catalog based on the 'catalog-impl' property (in this case we will not have a 'type' property).* + +### Changed +* **Spark: Move Spark 3.1 code from the spark3 project** [`#2365`](https://github.com/OpenLineage/OpenLineage/pull/2365) [@mattiabertorello](https://github.com/mattiabertorello) + *Moves the Spark 3.1-related code to a specific project, spark31, so the spark3 project can be compiled with any Spark 3.x version.* + +### Fixed +* **Airflow: add database information to SnowflakeExtractor** [`#2364`](https://github.com/OpenLineage/OpenLineage/pull/2364) [@kacpermuda](https://github.com/kacpermuda) + *Fixes missing database information in SnowflakeExtractor.* +* **Airflow: add dag_id to task_run_id to avoid duplicates** [`#2358`](https://github.com/OpenLineage/OpenLineage/pull/2358) [@kacpermuda](https://github.com/kacpermuda) + *The lack of dag_id in task_run_id can cause duplicates in run_id across different dags.* +* **Airflow: Add tests for column lineage facet and sql parser** [`#2373`](https://github.com/OpenLineage/OpenLineage/pull/2373) [@kacpermuda](https://github.com/kacpermuda) + *Improves naming (database.schema.table) in SQLExtractor's column lineage facet and adds some unit tests.* +* **Spark: fix removePathPattern behaviour** [`#2350`](https://github.com/OpenLineage/OpenLineage/pull/2350) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *The removepath pattern feature is not applied all the time. The method is called when constructing DatasetIdentifier through PathUtils which is not the case all the time. This moves removePattern to another place in the codebase that is always run.* +* **Spark: fix a type incompatibility in RddExecutionContext between Scala 2.12 and 2.13** [`#2360`](https://github.com/OpenLineage/OpenLineage/pull/2360) [@mattiabertorello](https://github.com/mattiabertorello) + *The function from the ResultStage.func() object change type in Spark between Scala 2.12 and 2.13 makes the compilation fail. This avoids getting the function with an explicit type; instead, it gets it every time it is needed from the ResultStage object. This PR is part of the effort to support Scala 2.13 in the Spark integration.* +* **Spark: Fix `removePathPattern` feature** [`#2350`](https://github.com/OpenLineage/OpenLineage/pull/2350) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Refactors code to make sure that all datasets sent are processed through `removePathPattern` if configured to do so.* +* **Spark: Clean up the individual build.gradle files in preparation for Scala 2.13 support** [`#2377`](https://github.com/OpenLineage/OpenLineage/pull/2377) [@d-m-h](https://github.com/d-m-h) + *Cleans up the build.gradle files, consolidating the custom plugin and removing unused and unnecessary configuration.* +* **Spark: refactor the Gradle plugins to make it easier to define Scala variants per module** [`#2383`](https://github.com/OpenLineage/OpenLineage/pull/2383) [@d-m-h](https://github.com/d-m-h) + *The third of several PRs to support producing Scala 2.12 and Scala 2.13 variants of the OpenLineage Spark integration. This PR refactors the custom Gradle plugins in order to make supporting multiple variants per module easier. This is necessary because the shared module fails its tests when consuming the Scala 2.13 variants of Apache Spark.* \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/releases/1_9_1.md b/versioned_docs/version-1.24.1/releases/1_9_1.md new file mode 100644 index 0000000..73fdfc5 --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/1_9_1.md @@ -0,0 +1,69 @@ +--- +title: 1.9.1 +sidebar_position: 9948 +--- + +# 1.9.1 - 2024-02-26 + +:::important +This version adds the capability to publish **Scala 2.12** and **2.13** variants of **Apache Spark**, +which necessitates a change in the artifact identifier for `io.openlineage:openlineage-spark`. +From this version onwards, please use:
+`io.openlineage:openlineage-spark_${SCALA_BINARY_VERSION}:${OPENLINEAGE_SPARK_VERSION}`. +::: + +### Added +* **Airflow: add support for `JobTypeJobFacet` properties** [`#2412`](https://github.com/OpenLineage/OpenLineage/pull/2412) [@mattiabertorello](https://github.com/mattiabertorello) + *Adds support for Job type properties within the Airflow Job facet.* +* **dbt: add support for `JobTypeJobFacet` properties** [`#2411`](https://github.com/OpenLineage/OpenLineage/pull/2411) [@mattiabertorello](https://github.com/mattiabertorello) + *Support Job type properties within the DBT Job facet.* +* **Flink: support Flink Kafka dynamic source and sink** [`#2417`](https://github.com/OpenLineage/OpenLineage/pull/2417) [@HuangZhenQiu](https://github.com/HuangZhenQiu) + *Adds support for Flink Kafka Table Connector use cases for topic and schema extraction.* +* **Flink: support multi-topic Kafka Sink** [`#2372`](https://github.com/OpenLineage/OpenLineage/pull/2372) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Adds support for multi-topic Kafka sinks. Limitations: `recordSerializer` needs to implement `KafkaTopicsDescriptor`. Please refer to the [limitations](https://openlineage.io/docs/integrations/flink/#limitations) sections in documentation.* +* **Flink: support lineage for JDBC connector** [`#2436`](https://github.com/OpenLineage/OpenLineage/pull/2436) [@HuangZhenQiu](https://github.com/HuangZhenQiu) + *Adds support for use cases that employ this connector.* +* **Flink: add common config gradle plugin** [`#2461`](https://github.com/OpenLineage/OpenLineage/pull/2461) [@HuangZhenQiu](https://github.com/HuangZhenQiu) + *Add common config gradle plugin to simplify gradle files of Flink submodules.* +* **Java: extend circuit breaker loaded with `ServiceLoader`** [`#2435`](https://github.com/OpenLineage/OpenLineage/pull/2435) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Loads the circuit breaker builder with `ServiceLoader` as an addition to a list of implemented builders available within the existing package.* +* **Spark: integration now emits intermediate, application level events wrapping entire job execution** [`#2371`](https://github.com/OpenLineage/OpenLineage/pull/2471) [@mobuchowski](https://github.com/mobuchowski) + *Previously, the Spark event model described only single actions, potentially linked only to some parent run. Closes [`#1672`](https://github.com/OpenLineage/OpenLineage/issues/1672).* +* **Spark: support built-in lineage within `DataSourceV2Relation`** [`#2394`](https://github.com/OpenLineage/OpenLineage/pull/2394) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Enables built-in lineage extraction within from `DataSourceV2Relation` lineage nodes.* +* **Spark: add support for `JobTypeJobFacet` properties** [`#2410`](https://github.com/OpenLineage/OpenLineage/pull/2410) [@mattiabertorello](https://github.com/mattiabertorello) + *Adds support for Job type properties within the Spark Job facet.* +* **Spark: stop sending `spark.LogicalPlan` facet by default** [`#2433`](https://github.com/OpenLineage/OpenLineage/pull/2433) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *`spark.LogicalPlan` has been added to default value of `spark.openlineage.facets.disabled`.* +* **Spark/Flink/Java: circuit breaker** [`#2407`](https://github.com/OpenLineage/OpenLineage/issues/2407) [@pawel-big-lebowski](https://github.com/pawel-big-lebowski) + *Introduces a circuit breaker mechanism to prevent effects of over-instrumentation. Implemented within Java client, it serves both the Flink and Spark integration. Read the Java client README for more details.* +* **Spark: add the capability to publish Scala 2.12 and 2.13 variants of `openlineage-spark`** [`#2446`](https://github.com/OpenLineage/OpenLineage/pull/2446) [@d-m-h](https://github.com/d-m-h) + *Adds the capability to publish Scala 2.12 and 2.13 variants of `openlineage-spark`* + +### Changed +* **Spark: enable the `app` module to be compiled with Scala 2.12 and Scala 2.13 variants of Apache Spark** [`#2432`](https://github.com/OpenLineage/OpenLineage/pull/2432) [@d-m-h](https://github.com/d-m-h) + *The `spark.binary.version` and `spark.version` properties control which variant to build.* +* **Spark: enable Scala 2.13 support in the `app` module** [`#2432`](https://github.com/OpenLineage/OpenLineage/pull/2432) [@d-m-h](https://github.com/d-m-h) + *Enables the `app` module to be built using both Scala 2.12 and Scala 2.13 variants of various Apache Spark versions, and enables the CI/CD pipeline to build and test them.* +* **Spark: don't fail on exception of `UnknownEntryFacet` creation** [`#2431`](https://github.com/OpenLineage/OpenLineage/pull/2431) [@mobuchowski](https://github.com/mobuchowski) + *Failure to generate `UnknownEntryFacet` was resulting in the event not being sent.* +* **Spark: move Snowflake code into the vendor projects folders** [`#2405`](https://github.com/OpenLineage/OpenLineage/pull/2405) [@mattiabertorello](https://github.com/mattiabertorello) + *Creates a `vendor` folder to isolate Snowflake-specific code from the main Spark integration, enhancing organization and flexibility.* + +### Fixed +* **Flink: resolve PMD rule violation warnings** [`#2403`](https://github.com/OpenLineage/OpenLineage/pull/2403) [@HuangZhenQiu](https://github.com/HuangZhenQiu) + *Resolves the PMD rule violation warnings in the Flink integration module.* +* **Flink: Added the 'isReleaseVersion' property back to the build, enabling the Flink integration to be release** [`#2468`](https://github.com/OpenLineage/OpenLineage/pull/2468) [@d-m-h](https://github.com/d-m-h) + *The 'isReleaseVersion' property was removed from the build, preventing the Flink integration from being released.* +* **Python: fix issue with file config creating additional file** [`#2447`](https://github.com/OpenLineage/OpenLineage/pull/2447) [@kacpermuda](https://github.com/kacpermuda) + *`FileConfig` was creating an additional file when not in append mode. Closes [`#2439`](https://github.com/OpenLineage/OpenLineage/issues/2439).* +* **Python: fix issue with append option in file config** [`#2441`](https://github.com/OpenLineage/OpenLineage/pull/2441) [@kacpermuda](https://github.com/kacpermuda) + *`FileConfig` was ignoring the append key in YAML config. Closes [`#2440`](https://github.com/OpenLineage/OpenLineage/issues/2440)* +* **Spark: fix integration catalog symlink without warehouse** [`#2379`](https://github.com/OpenLineage/OpenLineage/pull/2379) [@algorithmy1](https://github.com/algorithmy1) + *In the case of symlinked Glue Catalog Tables, the parsing method was producing dataset names identical to the namespace.* +* **Flink: fix `IcebergSourceWrapper` for Iceberg connector 1.17** [`#2409`](https://github.com/OpenLineage/OpenLineage/pull/2409) [@ensctom](https://github.com/ensctom) + *In Flink 1.17, the Iceberg `catalogloader` was loading the catalog in the open function, causing the `loadTable` method to throw a `NullPointerException` error.* +* **Spark: migrate `spark35`, `spark3`, `shared` modules to produce Scala 2.12 and Scala 2.13 variants** [`#2390`](https://github.com/OpenLineage/OpenLineage/pull/2390) [`#2385`](https://github.com/OpenLineage/OpenLineage/pull/2385)[`#2384`](https://github.com/OpenLineage/OpenLineage/pull/2384) [@d-m-h](https://github.com/d-m-h) + *Migrates the three modules to use the refactored Gradle plugins. Also splits some tests into Scala 2.12- and Scala 2.13-specific versions.* +* **Spark: conform the `spark2` module to the new build process** [`#2391`](https://github.com/OpenLineage/OpenLineage/pull/2391) [@d-m-h](https://github.com/d-m-h) + *Due to a change in the Scala Collections API in Scala 2.13, `NoSuchMethodErrors` were being thrown when running the openlineage-spack connector in an Apache Spark runtime compiled using Scala 2.13.* diff --git a/versioned_docs/version-1.24.1/releases/_category_.json b/versioned_docs/version-1.24.1/releases/_category_.json new file mode 100644 index 0000000..ffa523b --- /dev/null +++ b/versioned_docs/version-1.24.1/releases/_category_.json @@ -0,0 +1,5 @@ +{ + "label": "Releases", + "position": 9 + } + \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/scope.svg b/versioned_docs/version-1.24.1/scope.svg new file mode 100644 index 0000000..041badf --- /dev/null +++ b/versioned_docs/version-1.24.1/scope.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/spec/_category_.json b/versioned_docs/version-1.24.1/spec/_category_.json new file mode 100644 index 0000000..e895446 --- /dev/null +++ b/versioned_docs/version-1.24.1/spec/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Core Specification", + "position": 3 +} diff --git a/versioned_docs/version-1.24.1/spec/facets/_category_.json b/versioned_docs/version-1.24.1/spec/facets/_category_.json new file mode 100644 index 0000000..5984410 --- /dev/null +++ b/versioned_docs/version-1.24.1/spec/facets/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Facets & Extensibility", + "position": 5 +} diff --git a/versioned_docs/version-1.24.1/spec/facets/custom-facets.md b/versioned_docs/version-1.24.1/spec/facets/custom-facets.md new file mode 100644 index 0000000..5303cab --- /dev/null +++ b/versioned_docs/version-1.24.1/spec/facets/custom-facets.md @@ -0,0 +1,541 @@ +--- +title: Custom Facets +sidebar_position: 4 +--- + +# Custom Facets + +In addition to the existing facets mentioned in this documentation, users can extend the base facets and provide their own facet definition as part of the payload in OpenLineage event. For example, when OpenLineage event is emitted from the Apache Airflow using OpenLineage's Airflow integration, the following facets can be observed: + +```json +{ + "eventTime": "2022-10-03T00:07:56.891667Z", + "eventType": "START", + "inputs": [], + "job": { + "facets": {}, + "name": "inlet_outlet_demo.test-operator", + "namespace": "uninhabited-magnify-7821" + }, + "outputs": [], + "producer": "https://github.com/OpenLineage/OpenLineage/tree/0.13.0/integration/airflow", + "run": { + "facets": { + "airflow_runArgs": { + "_producer": "https://github.com/OpenLineage/OpenLineage/tree/0.13.0/integration/airflow", + "_schemaURL": "https://raw.githubusercontent.com/OpenLineage/OpenLineage/main/spec/OpenLineage.json#/definitions/BaseFacet", + "externalTrigger": true + }, + "airflow_version": { + "_producer": "https://github.com/OpenLineage/OpenLineage/tree/0.13.0/integration/airflow", + "_schemaURL": "https://raw.githubusercontent.com/OpenLineage/OpenLineage/main/spec/OpenLineage.json#/definitions/BaseFacet", + "airflowVersion": "2.3.4+astro.1", + "openlineageAirflowVersion": "0.13.0", + "operator": "airflow.operators.python.PythonOperator", + "taskInfo": { + "_BaseOperator__from_mapped": false, + "_BaseOperator__init_kwargs": { + "depends_on_past": false, + "email": [], + "email_on_failure": false, + "email_on_retry": false, + "op_kwargs": { + "x": "Apache Airflow" + }, + "owner": "demo", + "python_callable": "", + "start_date": "2022-10-02T00:00:00+00:00", + "task_id": "test-operator" + }, + "_BaseOperator__instantiated": true, + "_dag": { + "dag_id": "inlet_outlet_demo", + "tags": [] + }, + "_inlets": [], + "_log": "", + "_outlets": [], + "depends_on_past": false, + "do_xcom_push": true, + "downstream_task_ids": "{'end'}", + "email": [], + "email_on_failure": false, + "email_on_retry": false, + "executor_config": {}, + "ignore_first_depends_on_past": true, + "inlets": [], + "op_args": [], + "op_kwargs": { + "x": "Apache Airflow" + }, + "outlets": [], + "owner": "demo", + "params": "{}", + "pool": "default_pool", + "pool_slots": 1, + "priority_weight": 1, + "python_callable": "", + "queue": "default", + "retries": 0, + "retry_delay": "0:05:00", + "retry_exponential_backoff": false, + "show_return_value_in_logs": true, + "start_date": "2022-10-02T00:00:00+00:00", + "task_group": "", + "task_id": "test-operator", + "trigger_rule": "all_success", + "upstream_task_ids": "{'begin'}", + "wait_for_downstream": false, + "weight_rule": "downstream" + } + }, + "parentRun": { + "_producer": "https://github.com/OpenLineage/OpenLineage/tree/0.13.0/integration/airflow", + "_schemaURL": "https://raw.githubusercontent.com/OpenLineage/OpenLineage/main/spec/OpenLineage.json#/definitions/ParentRunFacet", + "job": { + "name": "inlet_outlet_demo", + "namespace": "uninhabited-magnify-7821" + }, + "run": { + "runId": "4da6f6d2-8902-3b6c-be7e-9269610a8c8f" + } + } + }, + "runId": "753b0c7c-e424-4e10-a5ab-062ae5be43ee" + } +} +``` +Both `airflow_runArgs` and `airflow_version` are not part of the default OpenLineage facets found [here](https://openlineage.io/apidocs/openapi). However, as long as they follow the [BaseFacet](https://openlineage.io/spec/1-0-2/OpenLineage.json#/$defs/BaseFacet) to contain the two mandatory element `_producer` and `_schemaURL`, it will be accepted and stored as part of the OpenLineage event, and will be able to be retrieved when you query those events. + +Custom facets are not part of the default facets. Therefore, it will be treated as a payload data as-is, but applications retrieving those, if they have the capability to understand its structure and use them, should be able to do so without any problems. + +## Example of creating your first custom facet + +Let's look at this sample OpenLineage client code written in python, that defines and uses a custom facet called `my-facet`. + +```python +#!/usr/bin/env python3 +from openlineage.client.run import ( + RunEvent, + RunState, + Run, + Job, + Dataset, + OutputDataset, + InputDataset, +) +from openlineage.client.client import OpenLineageClient, OpenLineageClientOptions +from openlineage.client.facet import ( + BaseFacet, + SqlJobFacet, + SchemaDatasetFacet, + SchemaField, + SourceCodeLocationJobFacet, + NominalTimeRunFacet, +) +from openlineage.client.uuid import generate_new_uuid +from datetime import datetime, timezone, timedelta +from typing import List +import attr +from random import random + +import logging, os +logging.basicConfig(level=logging.DEBUG) + +PRODUCER = f"https://github.com/openlineage-user" +namespace = "python_client" + +url = "http://localhost:5000" +api_key = "1234567890ckcu028rzu5l" + +client = OpenLineageClient( + url=url, + # optional api key in case the backend requires it + options=OpenLineageClientOptions(api_key=api_key), +) + +# generates job facet +def job(job_name, sql, location): + facets = { + "sql": SqlJobFacet(sql) + } + if location != None: + facets.update( + {"sourceCodeLocation": SourceCodeLocationJobFacet("git", location)} + ) + return Job(namespace=namespace, name=job_name, facets=facets) + +@attr.s +class MyFacet(BaseFacet): + name: str = attr.ib() + age: str = attr.ib() + email: str = attr.ib() + _additional_skip_redact: List[str] = ['name', 'age', 'email'] + def __init__(self, name, age, email): + super().__init__() + self.name = name + self.age = age + self.email = email + +# geneartes run racet +def run(run_id, hour, name, age, email): + return Run( + runId=run_id, + facets={ + "nominalTime": NominalTimeRunFacet( + nominalStartTime=f"2022-04-14T{twoDigits(hour)}:12:00Z" + ), + "my_facet": MyFacet(name, age, email) + }, + ) + +# generates dataset +def dataset(name, schema=None, ns=namespace): + if schema == None: + facets = {} + else: + facets = {"schema": schema} + return Dataset(namespace, name, facets) + + +# generates output dataset +def outputDataset(dataset, stats): + output_facets = {"stats": stats, "outputStatistics": stats} + return OutputDataset(dataset.namespace, dataset.name, dataset.facets, output_facets) + + +# generates input dataset +def inputDataset(dataset, dq): + input_facets = { + "dataQuality": dq, + } + return InputDataset(dataset.namespace, dataset.name, dataset.facets, input_facets) + + +def twoDigits(n): + if n < 10: + result = f"0{n}" + elif n < 100: + result = f"{n}" + else: + raise f"error: {n}" + return result + + +now = datetime.now(timezone.utc) + + +# generates run Event +def runEvents(job_name, sql, inputs, outputs, hour, min, location, duration): + run_id = str(generate_new_uuid()) + myjob = job(job_name, sql, location) + myrun = run(run_id, hour, 'user_1', 25, 'user_1@email.com') + st = now + timedelta(hours=hour, minutes=min, seconds=20 + round(random() * 10)) + end = st + timedelta(minutes=duration, seconds=20 + round(random() * 10)) + started_at = st.isoformat() + ended_at = end.isoformat() + return ( + RunEvent( + eventType=RunState.START, + eventTime=started_at, + run=myrun, + job=myjob, + producer=PRODUCER, + inputs=inputs, + outputs=outputs, + ), + RunEvent( + eventType=RunState.COMPLETE, + eventTime=ended_at, + run=myrun, + job=myjob, + producer=PRODUCER, + inputs=inputs, + outputs=outputs, + ), + ) + + +# add run event to the events list +def addRunEvents( + events, job_name, sql, inputs, outputs, hour, minutes, location=None, duration=2 +): + (start, complete) = runEvents( + job_name, sql, inputs, outputs, hour, minutes, location, duration + ) + events.append(start) + events.append(complete) + +events = [] + +# create dataset data +for i in range(0, 5): + + user_counts = dataset("tmp_demo.user_counts") + user_history = dataset( + "temp_demo.user_history", + SchemaDatasetFacet( + fields=[ + SchemaField(name="id", type="BIGINT", description="the user id"), + SchemaField( + name="email_domain", type="VARCHAR", description="the user id" + ), + SchemaField(name="status", type="BIGINT", description="the user id"), + SchemaField( + name="created_at", + type="DATETIME", + description="date and time of creation of the user", + ), + SchemaField( + name="updated_at", + type="DATETIME", + description="the last time this row was updated", + ), + SchemaField( + name="fetch_time_utc", + type="DATETIME", + description="the time the data was fetched", + ), + SchemaField( + name="load_filename", + type="VARCHAR", + description="the original file this data was ingested from", + ), + SchemaField( + name="load_filerow", + type="INT", + description="the row number in the original file", + ), + SchemaField( + name="load_timestamp", + type="DATETIME", + description="the time the data was ingested", + ), + ] + ), + "snowflake://", + ) + + create_user_counts_sql = """CREATE OR REPLACE TABLE TMP_DEMO.USER_COUNTS AS ( + SELECT DATE_TRUNC(DAY, created_at) date, COUNT(id) as user_count + FROM TMP_DEMO.USER_HISTORY + GROUP BY date + )""" + + # location of the source code + location = "https://github.com/some/airflow/dags/example/user_trends.py" + + # run simulating Airflow DAG with snowflake operator + addRunEvents( + events, + "create_user_counts", + create_user_counts_sql, + [user_history], + [user_counts], + i, + 11, + location, + ) + + +for event in events: + from openlineage.client.serde import Serde + # print(Serde.to_json(event)) + # time.sleep(1) + client.emit(event) + +``` + +As you can see in the source code, there is a class called `MyFacet` which extends from the `BaseFacet` of OpenLineage, having three attributes of `name`, `age`, and `email`. + +```python +@attr.s +class MyFacet(BaseFacet): + name: str = attr.ib() + age: str = attr.ib() + email: str = attr.ib() + _additional_skip_redact: List[str] = ['name', 'age', 'email'] + def __init__(self, name, age, email): + super().__init__() + self.name = name + self.age = age + self.email = email +``` + +And, when the application is generating a Run data, you can see the instantiation of `MyFacet`, having the name `my_facet`. + +```python +def run(run_id, hour, name, age, email): + return Run( + runId=run_id, + facets={ + "nominalTime": NominalTimeRunFacet( + nominalStartTime=f"2022-04-14T{twoDigits(hour)}:12:00Z" + ), + "my_facet": MyFacet(name, age, email) + }, + ) +``` + +When you run this application with python (and please make sure you have installed `openlineage-python` using pip before running it), you will see a series of JSON output that represents the OpenLineage events being submitted. Here is one example. + +```json +{ + "eventTime": "2022-12-09T09:17:28.239394+00:00", + "eventType": "COMPLETE", + "inputs": [ + { + "facets": { + "schema": { + "_producer": "https://github.com/OpenLineage/OpenLineage/tree/0.18.0/client/python", + "_schemaURL": "https://raw.githubusercontent.com/OpenLineage/OpenLineage/main/spec/OpenLineage.json#/definitions/SchemaDatasetFacet", + "fields": [ + { + "description": "the user id", + "name": "id", + "type": "BIGINT" + }, + { + "description": "the user id", + "name": "email_domain", + "type": "VARCHAR" + }, + { + "description": "the user id", + "name": "status", + "type": "BIGINT" + }, + { + "description": "date and time of creation of the user", + "name": "created_at", + "type": "DATETIME" + }, + { + "description": "the last time this row was updated", + "name": "updated_at", + "type": "DATETIME" + }, + { + "description": "the time the data was fetched", + "name": "fetch_time_utc", + "type": "DATETIME" + }, + { + "description": "the original file this data was ingested from", + "name": "load_filename", + "type": "VARCHAR" + }, + { + "description": "the row number in the original file", + "name": "load_filerow", + "type": "INT" + }, + { + "description": "the time the data was ingested", + "name": "load_timestamp", + "type": "DATETIME" + } + ] + } + }, + "name": "temp_demo.user_history", + "namespace": "python_client" + } + ], + "job": { + "facets": { + "sourceCodeLocation": { + "_producer": "https://github.com/OpenLineage/OpenLineage/tree/0.18.0/client/python", + "_schemaURL": "https://raw.githubusercontent.com/OpenLineage/OpenLineage/main/spec/OpenLineage.json#/definitions/SourceCodeLocationJobFacet", + "type": "git", + "url": "https://github.com/some/airflow/dags/example/user_trends.py" + }, + "sql": { + "_producer": "https://github.com/OpenLineage/OpenLineage/tree/0.18.0/client/python", + "_schemaURL": "https://raw.githubusercontent.com/OpenLineage/OpenLineage/main/spec/OpenLineage.json#/definitions/SqlJobFacet", + "query": "CREATE OR REPLACE TABLE TMP_DEMO.USER_COUNTS AS (\n\t\t\tSELECT DATE_TRUNC(DAY, created_at) date, COUNT(id) as user_count\n\t\t\tFROM TMP_DEMO.USER_HISTORY\n\t\t\tGROUP BY date\n\t\t\t)" + } + }, + "name": "create_user_counts", + "namespace": "python_client" + }, + "outputs": [ + { + "facets": {}, + "name": "tmp_demo.user_counts", + "namespace": "python_client" + } + ], + "producer": "https://github.com/openlineage-user", + "run": { + "facets": { + "my_facet": { + "_producer": "https://github.com/OpenLineage/OpenLineage/tree/0.18.0/client/python", + "_schemaURL": "https://raw.githubusercontent.com/OpenLineage/OpenLineage/main/spec/OpenLineage.json#/definitions/BaseFacet", + "age": 25, + "email": "user_1@email.com", + "name": "user_1" + }, + "nominalTime": { + "_producer": "https://github.com/OpenLineage/OpenLineage/tree/0.18.0/client/python", + "_schemaURL": "https://raw.githubusercontent.com/OpenLineage/OpenLineage/main/spec/OpenLineage.json#/definitions/NominalTimeRunFacet", + "nominalStartTime": "2022-04-14T04:12:00Z" + } + }, + "runId": "7886a902-8fec-422f-9ee4-818489e59f5f" + } +} +``` + +Notice the facet information `my_facet` that has is now part of the OpenLineage event. +```json + ... + "run": { + "facets": { + "my_facet": { + "_producer": "https://github.com/OpenLineage/OpenLineage/tree/0.18.0/client/python", + "_schemaURL": "https://raw.githubusercontent.com/OpenLineage/OpenLineage/main/spec/OpenLineage.json#/definitions/BaseFacet", + "age": 25, + "email": "user_1@email.com", + "name": "user_1" + }, + ... +``` + +OpenLineage backend should be able to store this information when submitted, and later, when you access the Lineage, you should be able to view the facet information that you submitted, along with your custom facet that you made. Below is the screen shot of one of the OpenLineage backend called [Marquez](https://marquezproject.ai/), that shows th custom facet that the application has submitted. + +![image](./custom-facets.png) + +You might have noticed the schema URL is actually that of `BaseFacet`. By default, if the facet class did not specify its own schema URL, that value would be that of BaseFacet. From the view of OpenLineage specification, this is legal. However, if you have your own JSON spec defined, and has it publically accessible, you can specify it by overriding the `_get_schema` function as such: + +```python +@attr.s +class MyFacet(BaseFacet): + name: str = attr.ib() + age: str = attr.ib() + email: str = attr.ib() + _additional_skip_redact: List[str] = ['name', 'age', 'email'] + def __init__(self, name, age, email): + super().__init__() + self.name = name + self.age = age + self.email = email + + @staticmethod + def _get_schema() -> str: + return "https://somewhere/schemas/myfacet.json#/definitions/MyFacet" +``` + +And the `_schemaURL` of the OpenLineage event would now reflect the change as such: + +```json + "run": { + "facets": { + "my_facet": { + "_producer": "https://github.com/OpenLineage/OpenLineage/tree/0.18.0/client/python", + "_schemaURL": "https://somewhere/schemas/myfacet.json#/definitions/MyFacet", + "age": 25, + "email": "user_1@email.com", + "name": "user_1" + }, +``` diff --git a/versioned_docs/version-1.24.1/spec/facets/custom-facets.png b/versioned_docs/version-1.24.1/spec/facets/custom-facets.png new file mode 100644 index 0000000000000000000000000000000000000000..9af5a42903f786be35a5481cb8d34e2c4b678ec1 GIT binary patch literal 263352 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

<-zZkzfyG)GdbL4fK`^rI_b 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 1.9.0. +::: + +In a complex environment, where there are thousands of processing jobs daily, there can be a lot of chaos. +Understanding not only which jobs produced what dataset, but also answering questions like: +- why did the job ran? +- when it ran? +- who scheduled the job? +- why did the job ran after other one finished? +can be often muddy. + +Fortunately, OpenLineage gives us not only the ability to understand the dataset-to-dataset lineage, but also +includes a description of the job hierarchy in its model. + +The tool OpenLineage provides for that is the ParentRunFacet. For a given run, it describes what other run spawned it. + +```json +"parent": { + "_producer": "https://github.com/OpenLineage/OpenLineage/tree/0.0.1/integration/dbt", + "_schemaURL": "https://openlineage.io/spec/facets/1-0-0/ParentRunFacet.json", + "run": { + "runId": "f99310b4-3c3c-1a1a-2b2b-c1b95c24ff11" + }, + "job": { + "namespace": "dbt", + "name": "dbt-job-name" + } +} +``` + +Data processing systems often integrate built-in hierarchies. Schedulers, for instance, use large, schedulable units like Airflow DAGs, which in turn comprise smaller, executable units like Airflow Tasks. OpenLineage seamlessly reflects this natural organization by mirroring the job hierarchy within its model. + +## Complex Job Hierarchy + +The simple mechanism on which OpenLineage bases it's job hierarchy model also allows us to describe more complex environments. +In this case, we have an Airflow DAG that has two tasks; one of which spawns a Spark job with two actions. The parent structure is shown in following diagram: + +![image](./job-hierarchy-jobs.png) + +Following diagram shows order in which events from those jobs are coming: + +![image](./job-hierarchy-events.png) diff --git a/versioned_docs/version-1.24.1/spec/naming-correlations.svg b/versioned_docs/version-1.24.1/spec/naming-correlations.svg new file mode 100644 index 0000000..5673bd6 --- /dev/null +++ b/versioned_docs/version-1.24.1/spec/naming-correlations.svg @@ -0,0 +1,85 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/versioned_docs/version-1.24.1/spec/naming.md b/versioned_docs/version-1.24.1/spec/naming.md new file mode 100644 index 0000000..975495e --- /dev/null +++ b/versioned_docs/version-1.24.1/spec/naming.md @@ -0,0 +1,79 @@ +--- +sidebar_position: 3 +--- + +# Naming Conventions + +Employing a unique naming strategy per resource ensures that the spec is followed uniformly regardless of metadata +producer. + +Jobs and Datasets have their own namespaces, job namespaces being derived from schedulers and dataset namespaces from +datasources. + +## Dataset Naming + +A dataset, or `table`, is organized according to a producer, namespace, database and (optionally) schema. + +| Data Store | Type | Namespace | Name | +|:------------------------------|:-------------------------------------|:---------------------------------------------------------------|:-----------------------------------------------------------| +| Athena | Warehouse | `awsathena://athena.{region_name}.amazonaws.com` | `{catalog}.{database}.{table}` | +| AWS Glue | Data catalog | `arn:aws:glue:{region}:{account id}` | `table/{database name}/{table name}` | +| Azure Cosmos DB | Warehouse | `azurecosmos://{host}/dbs/{database}` | `colls/{table}` | +| Azure Data Explorer | Warehouse | `azurekusto://{host}.kusto.windows.net` | `{database}/{table}` | +| Azure Synapse | Warehouse | `sqlserver://{host}:{port}` | `{schema}.{table}` | +| BigQuery | Warehouse | `bigquery://` | `{project id}.{dataset name}.{table name}` | +| Cassandra | Warehouse | `cassandra://{host}:{port}` | `{keyspace}.{table}` | +| MySQL | Warehouse | `mysql://{host}:{port}` | `{database}.{table}` | +| Oracle | Warehouse | `oracle://{host}:{port}` | `{serviceName}.{schema}.{table} or {sid}.{schema}.{table}` | +| Postgres | Warehouse | `postgres://{host}:{port}` | `{database}.{schema}.{table}` | +| Teradata | Warehouse | `teradata://{host}:{port}` | `{database}.{table}` | +| Redshift | Warehouse | `redshift://{cluster_identifier}.{region_name}:{port}` | `{database}.{schema}.{table}` | +| Snowflake | Warehouse | `snowflake://{organization name}-{account name}` | `{database}.{schema}.{table}` | +| Trino | Warehouse | `trino://{host}:{port}` | `{catalog}.{schema}.{table}` | +| ABFSS (Azure Data Lake Gen2) | Data lake | `abfss://{container name}@{service name}.dfs.core.windows.net` | `{path}` | +| DBFS (Databricks File System) | Distributed file system | `dbfs://{workspace name}` | `{path}` | +| GCS | Blob storage | `gs://{bucket name}` | `{object key}` | +| HDFS | Distributed file system | `hdfs://{namenode host}:{namenode port}` | `{path}` | +| Kafka | distributed event streaming platform | `kafka://{bootstrap server host}:{port}` | `{topic}` | +| Local file system | File system | `file` | `{path}` | +| Remote file system | File system | `file://{host}` | `{path}` | +| S3 | Blob Storage | `s3://{bucket name}` | `{object key}` | +| WASBS (Azure Blob Storage) | Blob Storage | `wasbs://{container name}@{service name}.dfs.core.windows.net` | `{object key}` | + +## Job Naming + +A `Job` is a recurring data transformation with inputs and outputs. Each execution is captured as a `Run` with +corresponding metadata. +A `Run` event identifies the `Job` it instances by providing the job’s unique identifier. +The `Job` identifier is composed of a `Namespace` and `Name`. The job namespace is usually set in OpenLineage client +config. The job name is unique within its namespace. + +| Job type | Name | Example | +|:-------------|:------------------------------|:-------------------------------------------------------------| +| Airflow task | `{dag_id}.{task_id}` | `orders_etl.count_orders` | +| Spark job | `{appName}.{command}.{table}` | `my_awesome_app.execute_insert_into_hive_table.mydb_mytable` | +| SQL | `{schema}.{table}` | `gx.validate_datasets` | + +## Run Naming + +Runs are named using client-generated UUIDs. The OpenLineage client is responsible for generating them and maintaining +them throughout the duration of the runcycle. + +```python +from openlineage.client.run import Run +from openlineage.client.uuid import generate_new_uuid + +run = Run(str(generate_new_uuid())) +``` + +## Why Naming Matters + +Naming enables focused insight into data flows, even when datasets and workflows are distributed across an organization. +This focus enabled by naming is key to the production of useful lineage. + +![image](./naming-correlations.svg) + +## Additional Resources + +* [The OpenLineage Naming Spec](https://github.com/OpenLineage/OpenLineage/blob/main/spec/Naming.md) +* [What's in a Namespace Blog Post](https://openlineage.io/blog/whats-in-a-namespace/) diff --git a/versioned_docs/version-1.24.1/spec/object-model.md b/versioned_docs/version-1.24.1/spec/object-model.md new file mode 100644 index 0000000..c327df1 --- /dev/null +++ b/versioned_docs/version-1.24.1/spec/object-model.md @@ -0,0 +1,94 @@ +--- +sidebar_position: 1 +--- + +# Object Model + +OpenLineage was designed to enable large-scale observation of datasets as they move through a complex pipeline. + +Because of this, it integrates with various tools with the aim of emitting real-time lineage events as datasets are created and transformed. The object model is flexible, with abstract definitions for Dataset and Job that support a variety of underlying data architectures. OpenLineage cares how Datasets come into being, not just that relationships exist between them. Accordingly, its object model contains both Jobs *and* Datasets. + +Logically, an OpenLineage backend learns about Datasets by receiving information about Jobs that run. Most Jobs have at least one input or output Dataset, and a lineage graph can be created by weaving together observations of many Jobs across multiple platforms. + +This information is in the form of **Run State Updates**, which contain information about Jobs, Datasets, and Runs. + +## Run State Update +A Run State Update is prepared and sent when something important occurs within your pipeline, and each one can be thought of as a distinct observation. This commonly happens when a Job starts or finishes. + +The run state itself refers to a stage within the [run cycle](./run-cycle.md) of the current run. Usually, the first Run State for a Job would be `START` and the last would be `COMPLETE`. A run cycle is likely to have at least two Run State Updates, and perhaps more. Each one will also have timestamp of when this particular state change happened. + +![OpenLineage Object Model](object-model.svg) + +Each Run State Update can include detail about the Job, the Run, and the input and output Datasets involved in the run. Subsequent updates are additive: input Datasets, for example, can be specified along with `START`, along with `COMPLETE`, or both. This accommodates situations where information is only available at certain times. + +Each of these three core entities can also be extended through the use of facets, some of which are documented in the relevant sections below. + +## Job +A Job is a process that consumes or produces Datasets. + +This is abstract, and can map to different things in different operational contexts. For example, a job could be a task in a workflow orchestration system. It could also be a model, a query, or a checkpoint. Depending on the system under observation, a Job can represent a small or large amount of work. + +A Job is the part of the object model that represents a discrete bit of defined work. If, for example, you have cron running a Python script that executes a `CREATE TABLE x AS SELECT * FROM y` query every day, the Python script is the Job. + +Jobs are identified by a unique name within a `namespace`. They are expected to evolve over time and their changes can be captured through Run State Updates. + +### Job Facets +Facets that can be used to augment the metadata of a Job include: + +- **sourceCodeLocation**: Captures the source code location and version (e.g., the git SHA) of the job. + +- **sourceCode**: Captures the language (e.g. python) and complete source code of the job. Using this source code, users can gain useful information about what the job does. + +For more details, please refer to the [Job Facets](./facets/job-facets). + +## Run +A Run is an instance of a Job that represents one of its occurrences in time. + +Each run will have a uniquely identifiable `runId` that is generated by the client as [UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier). The client is responsible for maintaining the `runId` between different Run State Updates in the same Run. It is recommended to use [UUIDv7](https://datatracker.ietf.org/doc/draft-ietf-uuidrev-rfc4122bis/) format. + +Runs can be used to observe changes in Jobs between their instances. If, for example, you have cron running a Python script that repeats a query every day, this should result in a separate Run for each day. + +### Run Facets + +Facets that can be used to augment the metadata of a Run include: + +- **nominalTime**: Captures the time this run is scheduled for. This is typically used for scheduled jobs. The job has a nominally scheduled time that will be different from the actual time it ran. + +- **parent**: Captures the parent Job and Run, for instances where this Run was spawned from a parent Run. For example in the case of [Airflow](https://airflow.apache.org/), there's a Run that represents the DAG itself that is the parent of the individual Runs that represent the tasks it spawns. Similarly when a SparkOperator starts a Spark job, this creates a separate run that refers to the task run as its parent. + +- **errorMessage**: Captures potential error messages - and optionally stack traces - with which the run failed. + +- **sql**: Captures the SQL query, if this job runs one. + +For more details, please refer to the [Run Facets](./facets/run-facets). + +## Dataset +A Dataset is an abstract representation of data. This can refer to a small amount or large amount of data, as long as it's discrete. For databases, this should be a table. For cloud storage, this is often an object in a bucket. This can represent a directory of a filesystem. + +It has a unique name within a namespace derived from its physical location (i.e., db.host.database.schema.table). The combined namespace and name for a Dataset should be enough to uniquely identify it within a data ecosystem. + +Typically, a *Dataset* changes when a job writing to it completes. Similarly to the *Job* and *Run* distinction, metadata that is more static from Run to Run is captured in a DatasetFacet - for example, the schema that does not change every run). What changes every *Run* is captured as an *InputFacet* or an *OutputFacet* - for example, a time partition indicating the subset of the data set that was read or written). + +A Dataset is the part of the object model that represents a discrete collection of data. If, for example, you have cron running a Python script that executes a `CREATE TABLE x AS SELECT * FROM y` query every day, the `x` and `y` tables are Datasets. + +### Dataset Facets + +Facets that can be used to augment the metadata of a Dataset include: + +- **schema**: Captures the schema of the dataset + +- **dataSource**: Captures the database instance containing this Dataset (e.g., database schema, object store bucket) + +- **lifecycleStateChange**: Captures the lifecycle states of the Dataset (e.g., alter, create, drop, overwrite, rename, truncate) + +- **version**: Captures the dataset version when versioning is defined by the data store (e.g.. Iceberg snapshot ID) + +Input Datasets have the following facets: +- **dataQualityMetrics**: Captures dataset-level and column-level data quality metrics (row count, byte size, null count, distinct count, average, min, max, quantiles) + +- **dataQualityAssertions**: Captures the result of running data tests on dataset or its columns + +Output Datasets have the following facets: +- **outputStatistics**: Captures the size of the output written to a dataset (e.g., row count and byte size) + +For more details, please refer to the [Dataset Facets](./facets/dataset-facets). diff --git a/versioned_docs/version-1.24.1/spec/object-model.svg b/versioned_docs/version-1.24.1/spec/object-model.svg new file mode 100644 index 0000000..46c074f --- /dev/null +++ b/versioned_docs/version-1.24.1/spec/object-model.svg @@ -0,0 +1,60 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/versioned_docs/version-1.24.1/spec/producers.md b/versioned_docs/version-1.24.1/spec/producers.md new file mode 100644 index 0000000..1e00458 --- /dev/null +++ b/versioned_docs/version-1.24.1/spec/producers.md @@ -0,0 +1,13 @@ +--- +sidebar_position: 6 +--- + +# Producers + +:::info +This page could use some extra detail! You're welcome to contribute using the Edit link at the bottom. +::: + +The `_producer` value is included in an OpenLineage request as a way to know how the metadata was generated. It is a URI that links to a source code SHA or the location where a package can be found. + +For example, this field is populated by many of the common integrations. For example, the dbt integration will set this value to `https://github.com/OpenLineage/OpenLineage/tree/{__version__}/integration/dbt` and the Python client will set it to `https://github.com/OpenLineage/OpenLineage/tree/{__version__}/client/python`. \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/spec/run-cycle-batch.svg b/versioned_docs/version-1.24.1/spec/run-cycle-batch.svg new file mode 100644 index 0000000..7a4e1ee --- /dev/null +++ b/versioned_docs/version-1.24.1/spec/run-cycle-batch.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/versioned_docs/version-1.24.1/spec/run-cycle-stream.svg b/versioned_docs/version-1.24.1/spec/run-cycle-stream.svg new file mode 100644 index 0000000..f01c664 --- /dev/null +++ b/versioned_docs/version-1.24.1/spec/run-cycle-stream.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/versioned_docs/version-1.24.1/spec/run-cycle.md b/versioned_docs/version-1.24.1/spec/run-cycle.md new file mode 100644 index 0000000..93c82bc --- /dev/null +++ b/versioned_docs/version-1.24.1/spec/run-cycle.md @@ -0,0 +1,48 @@ +--- +sidebar_position: 4 +--- + +# The Run Cycle + +The OpenLineage [object model](object-model.md) is event-based and updates provide an OpenLineage backend with details about the activities of a Job. + +The OpenLineage Run Cycle has several defined states that correspond to changes in the state of a pipeline task. When a task transitions between these - e.g. it is initiated, finishes, or fails - a Run State Update is sent that describes what happened. + +Each Run State Update contains the run state (i.e., `START`) along with metadata about the Job, its current Run, and its input and output Datasets. It is common to add additional metadata throughout the lifecycle of the run as it becomes available. + +## Run States + +There are six run states currently defined in the OpenLineage [spec](https://openlineage.io/apidocs/openapi/): + +* `START` to indicate the beginning of a Job + +* `RUNNING` to provide additional information about a running Job + +* `COMPLETE` to signify that execution of the Job has concluded + +* `ABORT` to signify that the Job has been stopped abnormally + +* `FAIL` to signify that the Job has failed + +* `OTHER` to send additional metadata outside standard run cycle + +We assume events describing a single run are **accumulative** and +`COMPLETE`, `ABORT` and `FAIL` are terminal events. Sending any of terminal events +means no other events related to this run will be emitted. + +Additionally, we allow `OTHER` to be sent anytime before the terminal states, +also before `START`. The purpose of this is the agility to send additional +metadata outside standard run cycle - e.g., on a run that hasn't yet started +but is already awaiting the resources. + +![image](./run-life-cycle.svg) + +## Typical Scenarios + +A batch Job - e.g., an Airflow task or a dbt model - will typically be represented as a `START` event followed by a `COMPLETE` event. Occasionally, an `ABORT` or `FAIL` event will be sent when a job does not complete successfully. + +![image](./run-cycle-batch.svg) + +A long-running Job - e.g., a microservice or a stream - will typically be represented by a `START` event followed by a series of `RUNNING` events that report changes in the run or emit performance metrics. Occasionally, a `COMPLETE`, `ABORT`, or `FAIL` event will occur, often followed by a `START` event as the job is reinitiated. + +![image](./run-cycle-stream.svg) diff --git a/versioned_docs/version-1.24.1/spec/run-life-cycle.svg b/versioned_docs/version-1.24.1/spec/run-life-cycle.svg new file mode 100644 index 0000000..18c13bd --- /dev/null +++ b/versioned_docs/version-1.24.1/spec/run-life-cycle.svg @@ -0,0 +1,4 @@ + + + +
COMPLETE
COMPLETE
START
START
ABORT
ABORT
FAIL
FAIL
RUNNING
RUNNING
OTHER
OTHER
Text is not SVG - cannot display
\ No newline at end of file diff --git a/versioned_docs/version-1.24.1/spec/schemas.md b/versioned_docs/version-1.24.1/spec/schemas.md new file mode 100644 index 0000000..68c8c08 --- /dev/null +++ b/versioned_docs/version-1.24.1/spec/schemas.md @@ -0,0 +1,47 @@ +--- +sidebar_position: 7 +--- + +# Working with Schemas + +OpenLineage is a rapidly growing open source project, and therefore, will face many new changes in its `SPEC`. The spec file is based on [JSON schema specification](https://json-schema.org/) and defines how the OpenLineage's event message would be structured. More details on what are defined in its object model can be found [here](./object-model.md). + +When you are working in the OpenLineage project and decided to introduce a new facet or make changes to existing facets, you have to know what needs to be done and also understand how the general build and test process works, so that the OpenLineage specs are well maintained and does not break anything. + +The following guidelines may help you to correctly introduce new changes. + +## Create a new issue with label `spec` +Before you decide to make any changes, it is best advised that you first label your issue with `spec`. This will indicate the the issue is related to any changes in the current OpenLineage spec. + +## Make changes to the spec's version +Whenever there is a change to existing spec file (JSON), you need to bump up the version of the existing current spec, so that the changes can go through the code generation and gradle build. Consider the following spec file, where you will see the URL in `$id` that shows what is the current spec version the file currently is. + +``` +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://openlineage.io/spec/facets/1-0-1/ColumnLineageDatasetFacet.json", + "$defs": { +``` + +In this example, bumping up the version to the new value, should be changed from 1-0-1 to 1-0-2. + +``` +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "$id": "https://openlineage.io/spec/facets/1-0-2/ColumnLineageDatasetFacet.json", + "$defs": { +``` + +> If you do not bump the version to higher number, the code generation of Java client will fail. + +## Python client's codes need to be manually updated +Java client's build process does involve `code generation` that automatically produces OpenLineage classes derived from the spec files, so you do not need to do anything in terms of coding the client. However, python client libraries does not depend on the spec files to be generated, so you have to make sure to add changes to the python code in order for it to know and use the changes. As for the facets, they are implemented [here](https://github.com/OpenLineage/OpenLineage/blob/main/client/python/openlineage/client/facet.py), so generally, you need to apply necessary changes to it. As for the general structure of OpenLineage's run events, it can be found [here](https://github.com/OpenLineage/OpenLineage/blob/main/client/python/openlineage/client/run.py). + +## Add test cases +Make sure to add changes to the unit tests for [python](https://github.com/OpenLineage/OpenLineage/tree/main/client/python/tests) and [java](https://github.com/OpenLineage/OpenLineage/tree/main/client/java/src/test/java/io/openlineage/client) to make sure the unit test can be performed against your new SPEC changes. Refer to existing test codes to add yours in. + +## Test the SPEC change using code generation and integration tests +When you have modified the SPEC file(s), always make sure to perform code generation and unit tests by going into `client/java` and running `./gradlew generateCode` and `./gradlew test`. As for python, cd into `client/python` and run `pytest`. + +> Note: Some of the tests may fail due to the fact that they require external systems like kafka. You can ignore those errors. + diff --git a/versioned_docs/version-1.24.1/where-ol-fits.svg b/versioned_docs/version-1.24.1/where-ol-fits.svg new file mode 100644 index 0000000..2461553 --- /dev/null +++ b/versioned_docs/version-1.24.1/where-ol-fits.svg @@ -0,0 +1,146 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/versioned_docs/version-1.24.1/with-ol.svg b/versioned_docs/version-1.24.1/with-ol.svg new file mode 100644 index 0000000..15945a7 --- /dev/null +++ b/versioned_docs/version-1.24.1/with-ol.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_sidebars/version-1.24.1-sidebars.json b/versioned_sidebars/version-1.24.1-sidebars.json new file mode 100644 index 0000000..caea0c0 --- /dev/null +++ b/versioned_sidebars/version-1.24.1-sidebars.json @@ -0,0 +1,8 @@ +{ + "tutorialSidebar": [ + { + "type": "autogenerated", + "dirName": "." + } + ] +} diff --git a/versions.json b/versions.json index 4fadad6..77675c9 100644 --- a/versions.json +++ b/versions.json @@ -1,4 +1,5 @@ [ + "1.24.1", "1.24.0", "1.23.0", "1.22.0",

qo6n1o>82-0)}gsuiSr_8G4qO`(*tht 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 literal 0 HcmV?d00001 diff --git a/versioned_docs/version-1.24.1/spec/facets/dataset-facets/_category_.json b/versioned_docs/version-1.24.1/spec/facets/dataset-facets/_category_.json new file mode 100644 index 0000000..d358b6a --- /dev/null +++ b/versioned_docs/version-1.24.1/spec/facets/dataset-facets/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Dataset Facets", + "position": 3 +} \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/spec/facets/dataset-facets/column_lineage_facet.md b/versioned_docs/version-1.24.1/spec/facets/dataset-facets/column_lineage_facet.md new file mode 100644 index 0000000..1d36d33 --- /dev/null +++ b/versioned_docs/version-1.24.1/spec/facets/dataset-facets/column_lineage_facet.md @@ -0,0 +1,262 @@ +--- +sidebar_position: 1 +--- + +# Column Level Lineage Dataset Facet + +Column level lineage provides fine grained information on datasets' dependencies. +Not only we know the dependency exist, but we are also able to understand +which input columns are used to produce which output columns and in what way. +This allows answering questions like *Which root input columns are used to construct column x?* + +For example, a Job might executes the following query: + +```sql +INSERT INTO top_delivery_times ( + order_id, + order_placed_on, + order_delivered_on, + order_delivery_time +) +SELECT + order_id, + order_placed_on, + order_delivered_on, + DATEDIFF(minute, order_placed_on, order_delivered_on) AS order_delivery_time, +FROM delivery_7_days +ORDER BY order_delivery_time DESC +LIMIT 1; +``` + +This would establish the following relationships between the `delivery_7_days` and `top_delivery_times` tables: + +![image](./column_lineage_facet.svg) + +An OpenLinage run state update that represent this query using column-level lineage facets might look like: + +```json +{ + "eventType": "START", + "eventTime": "2020-02-22T22:42:42.000Z", + "run": ..., + "job": ..., + "inputs": [ + { + "namespace": "food_delivery", + "name": "public.delivery_7_days" + } + ], + "outputs": [ + { + "namespace": "food_delivery", + "name": "public.top_delivery_times", + "facets": { + "columnLineage": { + "_producer": "https://github.com/MarquezProject/marquez/blob/main/docker/metadata.json", + "_schemaURL": "https://openlineage.io/spec/facets/1-0-1/ColumnLineageDatasetFacet.json", + "fields": { + "order_id": { + "inputFields": [ + { + "namespace": "food_delivery", + "name": "public.delivery_7_days", + "field": "order_id", + "transformations": [ + { + "type": "DIRECT", + "subtype": "IDENTITY", + "description": "", + "masking": false + } + ] + }, + { + "namespace": "food_delivery", + "name": "public.delivery_7_days", + "field": "order_placed_on", + "transformations": [ + { + "type": "INDIRECT", + "subtype": "SORT", + "description": "", + "masking": false + } + ] + }, + { + "namespace": "food_delivery", + "name": "public.delivery_7_days", + "field": "order_delivered_on", + "transformations": [ + { + "type": "INDIRECT", + "subtype": "SORT", + "description": "", + "masking": false + } + ] + } + ] + }, + "order_placed_on": { + "inputFields": [ + { + "namespace": "food_delivery", + "name": "public.delivery_7_days", + "field": "order_placed_on", + "transformations": [ + { + "type": "DIRECT", + "subtype": "IDENTITY", + "description": "", + "masking": false + }, + { + "type": "INDIRECT", + "subtype": "SORT", + "description": "", + "masking": false + } + ] + }, + { + "namespace": "food_delivery", + "name": "public.delivery_7_days", + "field": "order_delivered_on", + "transformations": [ + { + "type": "INDIRECT", + "subtype": "SORT", + "description": "", + "masking": false + } + ] + } + ] + }, + "order_delivered_on": { + "inputFields": [ + { + "namespace": "food_delivery", + "name": "public.delivery_7_days", + "field": "order_delivered_on", + "transformations": [ + { + "type": "DIRECT", + "subtype": "IDENTITY", + "description": "", + "masking": false + }, + { + "type": "INDIRECT", + "subtype": "SORT", + "description": "", + "masking": false + } + ] + }, + { + "namespace": "food_delivery", + "name": "public.delivery_7_days", + "field": "order_placed_on", + "transformations": [ + { + "type": "INDIRECT", + "subtype": "SORT", + "description": "", + "masking": false + } + ] + } + ] + }, + "order_delivery_time": { + "inputFields": [ + { + "namespace": "food_delivery", + "name": "public.delivery_7_days", + "field": "order_placed_on", + "transformations": [ + { + "type": "DIRECT", + "subtype": "TRANSFORMATION", + "description": "", + "masking": false + }, + { + "type": "INDIRECT", + "subtype": "SORT", + "description": "", + "masking": false + } + ] + }, + { + "namespace": "food_delivery", + "name": "public.delivery_7_days", + "field": "order_delivered_on", + "transformations": [ + { + "type": "DIRECT", + "subtype": "TRANSFORMATION", + "description": "", + "masking": false + }, + { + "type": "INDIRECT", + "subtype": "SORT", + "description": "", + "masking": false + } + ] + } + ] + } + } + } + } + } + ], + ... +} +``` + +The facet specification can be found [here](https://openlineage.io/spec/facets/1-1-0/ColumnLineageDatasetFacet.json). + +## Transformation Type + +To provide the best information about each field lineage, each `inputField` of an output can contain +the `transformations` field. This field describes what is the nature of relation between the input and the output columns. +Each transformation is described by 4 fields: `type`, `subtype`, `description` and `masking`. + +#### Type +Indicates how direct is the relationship e.g. in query +```roomsql +SELECT + source AS result +FROM TAB +WHERE pred = true; +``` +1. `DIRECT` - output column value was somehow derived from `inputField` value. In example `result` value is derived from `source` +2. `INDIRECT` - output column value is impacted by the value of `inputField` column, but it's not derived from it. In example no part `result` value is derived from `pred` but `pred` has impact on the values of `result` in the output dataset + +#### Subtype +Contains more specific information about the transformation + +Direct +- Identity - output value is taken as is from the input +- Transformation - output value is transformed source value from input row +- Aggregation - output value is aggregation of source values from multiple input rows + +Indirect +- Join - input used in join condition +- GroupBy - output is aggregated based on input (e.g. `GROUP BY` clause) +- Filter - input used as a filtering condition (e.g. `WHERE` clause) +- Order - output is sorted based on input field +- Window - output is windowed based on input field +- Conditional - input value is used in `IF` of `CASE WHEN` statements + +#### Masking +Boolean value indicating if the input value was obfuscated during the transformation. +The examples are: `hash` for Transformation and `count` for Aggregation. +List of available methods that are considered masking is dependent on the source system. diff --git a/versioned_docs/version-1.24.1/spec/facets/dataset-facets/column_lineage_facet.svg b/versioned_docs/version-1.24.1/spec/facets/dataset-facets/column_lineage_facet.svg new file mode 100644 index 0000000..86fcdce --- /dev/null +++ b/versioned_docs/version-1.24.1/spec/facets/dataset-facets/column_lineage_facet.svg @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/versioned_docs/version-1.24.1/spec/facets/dataset-facets/data_quality_assertions.md b/versioned_docs/version-1.24.1/spec/facets/dataset-facets/data_quality_assertions.md new file mode 100644 index 0000000..41eeb0b --- /dev/null +++ b/versioned_docs/version-1.24.1/spec/facets/dataset-facets/data_quality_assertions.md @@ -0,0 +1,35 @@ +--- +sidebar_position: 3 +--- + +# Data Quality Assertions Facet + +Example: + +```json +{ + ... + "inputs": { + "facets": { + "dataQualityAssertions": { + "_producer": "https://some.producer.com/version/1.0", + "_schemaURL": "https://openlineage.io/spec/facets/1-0-0/DataQualityAssertionsDatasetFacet.json", + "assertions": [ + { + "assertion": "not_null", + "success": true, + "column": "user_name" + }, + { + "assertion": "is_string", + "success": true, + "column": "user_name" + } + ] + } + } + } + ... +} +``` +The facet specification can be found [here](https://openlineage.io/spec/facets/1-0-0/DataQualityAssertionsDatasetFacet.json). \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/spec/facets/dataset-facets/data_source.md b/versioned_docs/version-1.24.1/spec/facets/dataset-facets/data_source.md new file mode 100644 index 0000000..5d176c1 --- /dev/null +++ b/versioned_docs/version-1.24.1/spec/facets/dataset-facets/data_source.md @@ -0,0 +1,25 @@ +--- +sidebar_position: 2 +--- + +# Datasource Facet + +Example: + +```json +{ + ... + "inputs": { + "facets": { + "dataSource": { + "_producer": "https://some.producer.com/version/1.0", + "_schemaURL": "https://openlineage.io/spec/facets/1-0-0/DatasourceDatasetFacet.json", + "name": "datasource_one", + "url": "https://some.location.com/datsource/one" + } + } + } + ... +} +``` +The facet specification can be found [here](https://openlineage.io/spec/facets/1-0-0/DatasourceDatasetFacet.json). \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/spec/facets/dataset-facets/dataset-facets.md b/versioned_docs/version-1.24.1/spec/facets/dataset-facets/dataset-facets.md new file mode 100644 index 0000000..2bf51ea --- /dev/null +++ b/versioned_docs/version-1.24.1/spec/facets/dataset-facets/dataset-facets.md @@ -0,0 +1,36 @@ +--- +sidebar_position: 1 +--- + +# Dataset Facets + +Dataset Facets are generally consisted of common facet that is used both in `inputs` and `outputs` of the OpenLineage event. There are facets that exist specifically for input or output datasets. + +```json +{ + ... + "inputs": [{ + "namespace": "postgres://workshop-db:None", + "name": "workshop.public.taxes-in", + "facets": { + # This is where the common dataset facets are located + }, + "inputFacets": { + # This is where the input dataset facets are located + } + }], + "outputs": [{ + "namespace": "postgres://workshop-db:None", + "name": "workshop.public.taxes-out", + "facets": { + # This is where the common dataset facets are located + }, + "outputFacets": { + # This is where the output dataset facets are located + } + }], + ... +} +``` + +In the above Example, Notice that there is a distinction of facets that are common for both input and output dataset, and input or output specific datasets. As for the common datasets, they all reside under the `facets` property. However, input or output specific facets are located either in `inputFacets` or `outputFacets` property. diff --git a/versioned_docs/version-1.24.1/spec/facets/dataset-facets/input-dataset-facets/_category_.json b/versioned_docs/version-1.24.1/spec/facets/dataset-facets/input-dataset-facets/_category_.json new file mode 100644 index 0000000..092b82b --- /dev/null +++ b/versioned_docs/version-1.24.1/spec/facets/dataset-facets/input-dataset-facets/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Input Dataset Facets", + "position": 100 +} \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/spec/facets/dataset-facets/input-dataset-facets/data_quality_metrics.md b/versioned_docs/version-1.24.1/spec/facets/dataset-facets/input-dataset-facets/data_quality_metrics.md new file mode 100644 index 0000000..ba82b85 --- /dev/null +++ b/versioned_docs/version-1.24.1/spec/facets/dataset-facets/input-dataset-facets/data_quality_metrics.md @@ -0,0 +1,70 @@ +--- +sidebar_position: 1 +--- + +# Data Quality Metrics Facet + +Example: + +```json +{ + ... + "inputs": { + "inputFacets": { + "dataQualityMetrics": { + "_producer": "https://some.producer.com/version/1.0", + "_schemaURL": "https://openlineage.io/spec/facets/1-0-2/DataQualityMetricsInputDatasetFacet.json", + "rowCount": 123, + "fileCount": 5, + "bytes": 35602, + "columnMetrics": { + "column_one": { + "nullCount": 132, + "distincCount": 11, + "sum": 500, + "count": 234, + "min": 111, + "max": 3234, + "quantiles": { + "0.1": 12, + "0.5": 22, + "1": 123, + "2": 11 + } + }, + "column_two": { + "nullCount": 132, + "distinctCount": 11, + "sum": 500, + "count": 234, + "min": 111, + "max": 3234, + "quantiles": { + "0.1": 12, + "0.5": 22, + "1": 123, + "2": 11 + } + }, + "column_three": { + "nullCount": 132, + "distincCount": 11, + "sum": 500, + "count": 234, + "min": 111, + "max": 3234, + "quantiles": { + "0.1": 12, + "0.5": 22, + "1": 123, + "2": 11 + } + } + } + } + } + } + ... +} +``` +The facet specification can be found [here](https://openlineage.io/spec/facets/1-0-2/DataQualityMetricsInputDatasetFacet.json). \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/spec/facets/dataset-facets/lifecycle_state_change.md b/versioned_docs/version-1.24.1/spec/facets/dataset-facets/lifecycle_state_change.md new file mode 100644 index 0000000..0e87fc6 --- /dev/null +++ b/versioned_docs/version-1.24.1/spec/facets/dataset-facets/lifecycle_state_change.md @@ -0,0 +1,44 @@ +--- +sidebar_position: 4 +--- + +# Lifecycle State Change Facet + +Example: + +```json +{ + ... + "outputs": { + "facets": { + "lifecycleStateChange": { + "_producer": "https://some.producer.com/version/1.0", + "_schemaURL": "https://openlineage.io/spec/facets/1-0-0/LifecycleStateChangeDatasetFacet.json", + "lifecycleStateChange": "CREATE" + } + } + } + ... +} +``` + +```json +{ + ... + "outputs": { + "facets": { + "lifecycleStateChange": { + "_producer": "https://some.producer.com/version/1.0", + "_schemaURL": "https://openlineage.io/spec/facets/1-0-0/LifecycleStateChangeDatasetFacet.json", + "lifecycleStateChange": "RENAME", + "previousIdentifier": { + "namespace": "example_namespace", + "name": "example_table_1" + } + } + } + } + ... +} +``` +The facet specification can be found [here](https://openlineage.io/spec/facets/1-0-0/LifecycleStateChangeDatasetFacet.json). \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/spec/facets/dataset-facets/output-dataset-facets/_category_.json b/versioned_docs/version-1.24.1/spec/facets/dataset-facets/output-dataset-facets/_category_.json new file mode 100644 index 0000000..21117f1 --- /dev/null +++ b/versioned_docs/version-1.24.1/spec/facets/dataset-facets/output-dataset-facets/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Output Dataset Facets", + "position": 101 +} \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/spec/facets/dataset-facets/output-dataset-facets/output_statistics.md b/versioned_docs/version-1.24.1/spec/facets/dataset-facets/output-dataset-facets/output_statistics.md new file mode 100644 index 0000000..7523782 --- /dev/null +++ b/versioned_docs/version-1.24.1/spec/facets/dataset-facets/output-dataset-facets/output_statistics.md @@ -0,0 +1,26 @@ +--- +sidebar_position: 1 +--- + +# Output Statistics Facet + +Example: + +```json +{ + ... + "outputs": { + "outputFacets": { + "outputStatistics": { + "_producer": "https://some.producer.com/version/1.0", + "_schemaURL": "https://openlineage.io/spec/facets/1-0-2/OutputStatisticsOutputDatasetFacet.json", + "rowCount": 123, + "fileCount": 5, + "size": 35602 + } + } + } + ... +} +``` +The facet specification can be found [here](https://openlineage.io/spec/facets/1-0-2/OutputStatisticsOutputDatasetFacet.json). diff --git a/versioned_docs/version-1.24.1/spec/facets/dataset-facets/ownership.md b/versioned_docs/version-1.24.1/spec/facets/dataset-facets/ownership.md new file mode 100644 index 0000000..f84dadd --- /dev/null +++ b/versioned_docs/version-1.24.1/spec/facets/dataset-facets/ownership.md @@ -0,0 +1,30 @@ +--- +sidebar_position: 5 +--- + +# Ownership Dataset Facet + +Example: + +```json +{ + ... + "inputs": { + "facets": { + "ownership": { + "_producer": "https://some.producer.com/version/1.0", + "_schemaURL": "https://openlineage.io/spec/facets/1-0-0/OwnershipDatasetFacet.json", + "owners": [ + { + "name": "maintainer_one", + "type": "MAINTAINER" + } + ] + } + } + } + ... +} +``` + +The facet specification can be found [here](https://openlineage.io/spec/facets/1-0-0/OwnershipDatasetFacet.json). \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/spec/facets/dataset-facets/schema.md b/versioned_docs/version-1.24.1/spec/facets/dataset-facets/schema.md new file mode 100644 index 0000000..1d7b7b2 --- /dev/null +++ b/versioned_docs/version-1.24.1/spec/facets/dataset-facets/schema.md @@ -0,0 +1,115 @@ +--- +sidebar_position: 6 +--- + +# Schema Dataset Facet + +The schema dataset facet contains the schema of a particular dataset. +Besides a name, it provides an optional type and description of each field. + +Nested fields are supported as well. + + +Example: + +```json +{ + ... + "inputs": { + "facets": { + "schema": { + "_producer": "https://some.producer.com/version/1.0", + "_schemaURL": "https://openlineage.io/spec/facets/1-1-1/SchemaDatasetFacet.json", + "fields": [ + { + "name": "id", + "type": "int", + "description": "Customer's identifier" + }, + { + "name": "name", + "type": "string", + "description": "Customer's name" + }, + { + "name": "is_active", + "type": "boolean", + "description": "Has customer completed activation process" + }, + { + "name": "phones", + "type": "array", + "description": "List of phone numbers", + "fields": [ + { + "name": "_element", + "type": "string", + "description": "Phone number" + } + ] + }, + { + "name": "address", + "type": "struct", + "description": "Customer address", + "fields": [ + { + "name": "type", + "type": "string", + "description": "Address type, g.e. home, work, etc." + }, + { + "name": "country", + "type": "string", + "description": "Country name" + }, + { + "name": "zip", + "type": "string", + "description": "Zip code" + }, + { + "name": "state", + "type": "string", + "description": "State name" + }, + { + "name": "street", + "type": "string", + "description": "Street name" + } + ] + }, + { + "name": "custom_properties", + "type": "map", + "fields": [ + { + "name": "key", + "type": "string" + }, + { + "name": "value", + "type": "union", + "fields": [ + { + "name": "_0", + "type": "string" + }, + { + "name": "_1", + "type": "int64" + } + ] + } + ] + } + ] + } + } + } + ... +} +``` + +The facet specification can be found [here](https://openlineage.io/spec/facets/1-1-1/SchemaDatasetFacet.json). \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/spec/facets/dataset-facets/storage.md b/versioned_docs/version-1.24.1/spec/facets/dataset-facets/storage.md new file mode 100644 index 0000000..0a79aea --- /dev/null +++ b/versioned_docs/version-1.24.1/spec/facets/dataset-facets/storage.md @@ -0,0 +1,25 @@ +--- +sidebar_position: 7 +--- + +# Storage Facet + +Example: + +```json +{ + ... + "inputs": { + "facets": { + "storage": { + "_producer": "https://some.producer.com/version/1.0", + "_schemaURL": "https://openlineage.io/spec/facets/1-0-0/StorageDatasetFacet.json", + "storageLayer": "iceberg", + "fileFormat": "csv" + } + } + } + ... +} +``` +The facet specification can be found [here](https://openlineage.io/spec/facets/1-0-0/StorageDatasetFacet.json). \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/spec/facets/dataset-facets/symlinks.md b/versioned_docs/version-1.24.1/spec/facets/dataset-facets/symlinks.md new file mode 100644 index 0000000..7180823 --- /dev/null +++ b/versioned_docs/version-1.24.1/spec/facets/dataset-facets/symlinks.md @@ -0,0 +1,28 @@ +--- +sidebar_position: 8 +--- + +# Symlinks Facet + +Example: + +```json +{ + ... + "inputs": { + "facets": { + "symlinks": { + "_producer": "https://some.producer.com/version/1.0", + "_schemaURL": "https://openlineage.io/spec/facets/1-0-0/SymlinksDatasetFacet.json", + "identifiers": [ + "namespace": "example_namespace", + "name": "example_dataset_1", + "type": "table" + ] + } + } + } + ... +} +``` +The facet specification can be found [here](https://openlineage.io/spec/facets/1-0-0/SymlinksDatasetFacet.json). \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/spec/facets/dataset-facets/version_facet.md b/versioned_docs/version-1.24.1/spec/facets/dataset-facets/version_facet.md new file mode 100644 index 0000000..b7c9906 --- /dev/null +++ b/versioned_docs/version-1.24.1/spec/facets/dataset-facets/version_facet.md @@ -0,0 +1,24 @@ +--- +sidebar_position: 9 +--- + +# Version Facet + +Example: + +```json +{ + ... + "inputs": { + "facets": { + "version": { + "_producer": "https://some.producer.com/version/1.0", + "_schemaURL": "https://openlineage.io/spec/facets/1-0-0/DatasetVersionDatasetFacet.json", + "datasetVersion": "1" + } + } + } + ... +} +``` +The facet specification can be found [here](https://openlineage.io/spec/facets/1-0-0/DatasetVersionDatasetFacet.json). \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/spec/facets/facets.md b/versioned_docs/version-1.24.1/spec/facets/facets.md new file mode 100644 index 0000000..cf3c6c5 --- /dev/null +++ b/versioned_docs/version-1.24.1/spec/facets/facets.md @@ -0,0 +1,96 @@ +--- +sidebar_position: 4 +--- + +# Facets & Extensibility + +Facets provide context to the OpenLineage events. Generally, an OpenLineage event contains the type of the event, who created it, and when the event happened. In addition to the basic information related to the event, it provides `facets` for more details in four general categories: + +- job: What kind of activity ran +- run: How it ran +- inputs: What was used during its run +- outputs: What was the outcome of the run + +Here is an example of the four facets in action. Notice the element `facets` under each of the four categories of the OpenLineage event: + +```json +{ + "eventType": "START", + "eventTime": "2020-12-28T19:52:00.001+10:00", + "run": { + "runId": "d46e465b-d358-4d32-83d4-df660ff614dd", + "facets": { + "parent": { + "job": { + "name": "dbt-execution-parent-job", + "namespace": "dbt-namespace" + }, + "run": { + "runId": "f99310b4-3c3c-1a1a-2b2b-c1b95c24ff11" + } + } + } + }, + "job": { + "namespace": "workshop", + "name": "process_taxes", + "facets": { + "sql": { + "query": "insert into taxes_out select id, name, is_active from taxes_in" + } + } + }, + "inputs": [{ + "namespace": "postgres://workshop-db:None", + "name": "workshop.public.taxes-in", + "facets": { + "schema": { + "fields": [ + { + "name": "id", + "type": "int", + "description": "Customer's identifier" + }, + { + "name": "name", + "type": "string", + "description": "Customer's name" + }, + { + "name": "is_active", + "type": "boolean", + "description": "Has customer completed activation process" + } + ] + } + } + }], + "outputs": [{ + "namespace": "postgres://workshop-db:None", + "name": "workshop.public.taxes-out", + "facets": { + "schema": { + "fields": [ + { + "name": "id", + "type": "int", + "description": "Customer's identifier" + }, + { + "name": "name", + "type": "string", + "description": "Customer's name" + }, + { + "name": "is_active", + "type": "boolean", + "description": "Has customer completed activation process" + } + ] + } + } + }], + "producer": "https://github.com/OpenLineage/OpenLineage/blob/v1-0-0/client" +} +``` +For more information of what kind of facets are available as part of OpenLineage spec, please refer to the sub sections `Run Facets`, `Job Facets`, and `Dataset Facets` of this document. diff --git a/versioned_docs/version-1.24.1/spec/facets/job-facets/_category_.json b/versioned_docs/version-1.24.1/spec/facets/job-facets/_category_.json new file mode 100644 index 0000000..dbfbefb --- /dev/null +++ b/versioned_docs/version-1.24.1/spec/facets/job-facets/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Job Facets", + "position": 2 +} \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/spec/facets/job-facets/documentation.md b/versioned_docs/version-1.24.1/spec/facets/job-facets/documentation.md new file mode 100644 index 0000000..fa3e49a --- /dev/null +++ b/versioned_docs/version-1.24.1/spec/facets/job-facets/documentation.md @@ -0,0 +1,28 @@ +--- +sidebar_position: 1 +--- + +# Documentation Facet + +Contains the documentation or description of the job. + +Example: + +```json +{ + ... + "job": { + "facets": { + "documentation": { + "_producer": "https://some.producer.com/version/1.0", + "_schemaURL": "https://github.com/OpenLineage/OpenLineage/blob/main/spec/facets/DocumentationJobFacet.json", + "description": "This is the documentation of something." + } + } + } + ... +} +``` + + +The facet specification can be found [here](https://openlineage.io/spec/facets/1-0-0/DocumentationJobFacet.json) \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/spec/facets/job-facets/job-facets.md b/versioned_docs/version-1.24.1/spec/facets/job-facets/job-facets.md new file mode 100644 index 0000000..63229f5 --- /dev/null +++ b/versioned_docs/version-1.24.1/spec/facets/job-facets/job-facets.md @@ -0,0 +1,7 @@ +--- +sidebar_position: 1 +--- + +# Job Facets + +Job Facets apply to a distinct instance of a job: an abstract `process` that consumes, executes, and produces datasets (defined as its inputs and outputs). It is identified by a `unique name` within a `namespace`. The *Job* evolves over time and this change is captured during the job runs. diff --git a/versioned_docs/version-1.24.1/spec/facets/job-facets/job-type.md b/versioned_docs/version-1.24.1/spec/facets/job-facets/job-type.md new file mode 100644 index 0000000..6005b48 --- /dev/null +++ b/versioned_docs/version-1.24.1/spec/facets/job-facets/job-type.md @@ -0,0 +1,44 @@ +--- +sidebar_position: 6 +--- + +# Job type Job Facet + +Facet to contain job properties like: + * `processingType` which can be `STREAMING` or `BATCH`, + * `integration` which can be `SPARK|DBT|AIRFLOW|FLINK`, + * `jobType` which can be `QUERY|COMMAND|DAG|TASK|JOB|MODEL`. + +Example: + +```json +{ + ... + "job": { + "facets": { + "jobType": { + "processingType": "BATCH", + "integration": "SPARK", + "jobType": "QUERY", + "_producer": "https://github.com/OpenLineage/OpenLineage/blob/v1-0-0/client", + "_schemaURL": "https://openlineage.io/spec/facets/2-0-2/JobTypeJobFacet.json" + } + } + ... +} +``` + +The examples for specific integrations: + + * Integration: `SPARK` + * Processing type: `STREAM`|`BATCH` + * Job type: `JOB`|`COMMAND` + * Integration: `AIRFLOW` + * Processing type: `BATCH` + * Job type: `DAG`|`TASK` + * Integration: `DBT` + * ProcessingType: `BATCH` + * JobType: `PROJECT`|`MODEL` + * Integration: `FLINK` + * Processing type: `STREAMING`|`BATCH` + * Job type: `JOB` diff --git a/versioned_docs/version-1.24.1/spec/facets/job-facets/ownership.md b/versioned_docs/version-1.24.1/spec/facets/job-facets/ownership.md new file mode 100644 index 0000000..b27560c --- /dev/null +++ b/versioned_docs/version-1.24.1/spec/facets/job-facets/ownership.md @@ -0,0 +1,34 @@ +--- +sidebar_position: 2 +--- + +# Ownership Job Facet + + +The facet that contains the information regarding users or group who owns this particular job. + +Example: + +```json +{ + ... + "job": { + "facets": { + "ownership": { + "_producer": "https://some.producer.com/version/1.0", + "_schemaURL": "https://openlineage.io/spec/facets/1-0-0/OwnershipJobFacet.json", + "owners": [ + { + "name": "maintainer_one", + "type": "MAINTAINER" + } + ] + } + } + } + ... +} +``` + + +The facet specification can be found [here](https://openlineage.io/spec/facets/1-0-0/OwnershipJobFacet.json) \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/spec/facets/job-facets/source-code-location.md b/versioned_docs/version-1.24.1/spec/facets/job-facets/source-code-location.md new file mode 100644 index 0000000..7116352 --- /dev/null +++ b/versioned_docs/version-1.24.1/spec/facets/job-facets/source-code-location.md @@ -0,0 +1,34 @@ +--- +sidebar_position: 4 +--- + +# Source Code Location Facet + +The facet that indicates where the source code is located. + +Example: + +```json +{ + ... + "job": { + "facets": { + "sourceCodeLocation": { + "_producer": "https://some.producer.com/version/1.0", + "_schemaURL": "https://github.com/OpenLineage/OpenLineage/blob/main/spec/facets/SourceCodeLocationJobFacet.json", + "type": "git|svn", + "url": "https://github.com/MarquezProject/marquez-airflow-quickstart/blob/693e35482bc2e526ced2b5f9f76ef83dec6ec691/dags/hello.py", + "repoUrl": "git@github.com:{org}/{repo}.git or https://github.com/{org}/{repo}.git|svn:///", + "path": "path/to/my/dags", + "version": "git: the git sha | Svn: the revision number", + "tag": "example", + "branch": "main" + } + } + } + ... +} +``` + + +The facet specification can be found [here](https://openlineage.io/spec/facets/1-0-0/SourceCodeLocationJobFacet.json) \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/spec/facets/job-facets/source-code.md b/versioned_docs/version-1.24.1/spec/facets/job-facets/source-code.md new file mode 100644 index 0000000..abfa374 --- /dev/null +++ b/versioned_docs/version-1.24.1/spec/facets/job-facets/source-code.md @@ -0,0 +1,29 @@ +--- +sidebar_position: 3 +--- + +# Source Code Facet + +The source code of a particular job (e.g. Python script) + +Example: + +```json +{ + ... + "job": { + "facets": { + "sourceCode": { + "_producer": "https://some.producer.com/version/1.0", + "_schemaURL": "https://github.com/OpenLineage/OpenLineage/blob/main/spec/facets/SourceCodeJobFacet.json", + "language": "python", + "sourceCode": "print('hello, OpenLineage!')" + } + } + } + ... +} +``` + + +The facet specification can be found [here](https://openlineage.io/spec/facets/1-0-0/SourceCodeJobFacet.json) \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/spec/facets/job-facets/sql.md b/versioned_docs/version-1.24.1/spec/facets/job-facets/sql.md new file mode 100644 index 0000000..320de5f --- /dev/null +++ b/versioned_docs/version-1.24.1/spec/facets/job-facets/sql.md @@ -0,0 +1,29 @@ +--- +sidebar_position: 5 +--- + + +# SQL Job Facet + +The SQL Job Facet contains a SQL query that was used in a particular job. + +Example: + +```json +{ + ... + "job": { + "facets": { + "sql": { + "_producer": "https://some.producer.com/version/1.0", + "_schemaURL": "https://github.com/OpenLineage/OpenLineage/blob/main/spec/facets/SQLJobFacet.json", + "query": "select id, name from schema.table where id = 1" + } + } + } + ... +} +``` + + +The facet specification can be found [here](https://openlineage.io/spec/facets/1-0-0/SQLJobFacet.json) \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/spec/facets/run-facets/_category_.json b/versioned_docs/version-1.24.1/spec/facets/run-facets/_category_.json new file mode 100644 index 0000000..1b30c5a --- /dev/null +++ b/versioned_docs/version-1.24.1/spec/facets/run-facets/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Run Facets", + "position": 1 +} \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/spec/facets/run-facets/environment_variables.md b/versioned_docs/version-1.24.1/spec/facets/run-facets/environment_variables.md new file mode 100644 index 0000000..b142986 --- /dev/null +++ b/versioned_docs/version-1.24.1/spec/facets/run-facets/environment_variables.md @@ -0,0 +1,13 @@ +--- +sidebar_position: 6 +--- + +# Environment Variables Run Facet +The Environment Variables Run Facet provides detailed information about the environment variables that were set during the execution of a job. This facet is useful for capturing the runtime environment configuration, which can be used for categorizing and filtering jobs based on their environment settings. + +| Property | Description | Type | Example | Required | +|-----------------------|-----------------------------------------------------------------------------|--------|---------------------------|----------| +| name | The name of the environment variable. This helps in identifying the specific environment variable used during the job run. | string | "JAVA_HOME" | Yes | +| value | The value of the environment variable. This captures the actual value set for the environment variable during the job run. | string | "/usr/lib/jvm/java-11" | Yes | + +The facet specification can be found [here](https://openlineage.io/spec/facets/1-0-0/EnvironmentVariablesRunFacet.json). \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/spec/facets/run-facets/error_message.md b/versioned_docs/version-1.24.1/spec/facets/run-facets/error_message.md new file mode 100644 index 0000000..219ab0e --- /dev/null +++ b/versioned_docs/version-1.24.1/spec/facets/run-facets/error_message.md @@ -0,0 +1,31 @@ +--- +sidebar_position: 1 +--- + + +# Error Message Facet + +The facet to contain information about the failures during the run of the job. A typical payload would be the message, stack trace, etc. + +Example: + +```json +{ + ... + "run": { + "facets": { + "errorMessage": { + "_producer": "https://some.producer.com/version/1.0", + "_schemaURL": "https://github.com/OpenLineage/OpenLineage/blob/main/spec/facets/ErrorMessageRunFacet.json", + "message": "org.apache.spark.sql.AnalysisException: Table or view not found: wrong_table_name; line 1 pos 14", + "programmingLanguage": "JAVA", + "stackTrace": "Exception in thread \"main\" java.lang.RuntimeException: A test exception\nat io.openlineage.SomeClass.method(SomeClass.java:13)\nat io.openlineage.SomeClass.anotherMethod(SomeClass.java:9)" + } + } + } + ... +} +``` + + +The facet specification can be found [here](https://openlineage.io/spec/facets/1-0-0/ErrorMessageRunFacet.json) \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/spec/facets/run-facets/external_query.md b/versioned_docs/version-1.24.1/spec/facets/run-facets/external_query.md new file mode 100644 index 0000000..d6c4f5c --- /dev/null +++ b/versioned_docs/version-1.24.1/spec/facets/run-facets/external_query.md @@ -0,0 +1,30 @@ +--- +sidebar_position: 2 +--- + + +# External Query Facet + +The facet that describes the identification of the query that the run is related to which was executed by external systems. Even though the query itself is not contained, using this facet, the user should be able to access the query and its details. + +Example: + +```json +{ + ... + "run": { + "facets": { + "externalQuery": { + "_producer": "https://some.producer.com/version/1.0", + "_schemaURL": "https://github.com/OpenLineage/OpenLineage/blob/main/spec/facets/ExternalQueryRunFacet.json", + "externalQueryId": "my-project-1234:US.bquijob_123x456_123y123z123c", + "source": "bigquery" + } + } + } + ... +} +``` + + +The facet specification can be found [here](https://openlineage.io/spec/facets/1-0-0/ExternalQueryRunFacet.json) \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/spec/facets/run-facets/nominal_time.md b/versioned_docs/version-1.24.1/spec/facets/run-facets/nominal_time.md new file mode 100644 index 0000000..aa9f3c9 --- /dev/null +++ b/versioned_docs/version-1.24.1/spec/facets/run-facets/nominal_time.md @@ -0,0 +1,30 @@ +--- +sidebar_position: 3 +--- + + +# Nominal Time Facet + +The facet to describe the nominal start and end time of the run. The nominal usually means the time the job run was expected to run (like a scheduled time), and the actual time can be different. + +Example: + +```json +{ + ... + "run": { + "facets": { + "nominalTime": { + "_producer": "https://some.producer.com/version/1.0", + "_schemaURL": "https://github.com/OpenLineage/OpenLineage/blob/main/spec/facets/SQLJobFacet.json", + "nominalStartTime": "2020-12-17T03:00:00.000Z", + "nominalEndTime": "2020-12-17T03:05:00.000Z" + } + } + } + ... +} +``` + + +The facet specification can be found [here](https://openlineage.io/spec/facets/1-0-0/NominalTimeRunFacet.json) \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/spec/facets/run-facets/parent_run.md b/versioned_docs/version-1.24.1/spec/facets/run-facets/parent_run.md new file mode 100644 index 0000000..8c4f6ec --- /dev/null +++ b/versioned_docs/version-1.24.1/spec/facets/run-facets/parent_run.md @@ -0,0 +1,34 @@ +--- +sidebar_position: 4 +--- + +# Parent Run Facet + +Commonly, scheduler systems like Apache Airflow will trigger processes on remote systems, such as on Apache Spark or Apache Beam jobs. +Those systems might have their own OpenLineage integration and report their own job runs and dataset inputs/outputs. +The ParentRunFacet allows those downstream jobs to report which jobs spawned them to preserve job hierarchy. +To do that, the scheduler system should have a way to pass its own job and run id to the child job. + +Example: + +```json +{ + ... + "run": { + "facets": { + "parent": { + "job": { + "name": "the-execution-parent-job", + "namespace": "the-namespace" + }, + "run": { + "runId": "f99310b4-3c3c-1a1a-2b2b-c1b95c24ff11" + } + } + } + } + ... +} +``` + +The facet specification can be found [here](https://openlineage.io/spec/facets/1-0-0/ParentRunFacet.json). \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/spec/facets/run-facets/processing_engine.md b/versioned_docs/version-1.24.1/spec/facets/run-facets/processing_engine.md new file mode 100644 index 0000000..86e857e --- /dev/null +++ b/versioned_docs/version-1.24.1/spec/facets/run-facets/processing_engine.md @@ -0,0 +1,16 @@ +--- +sidebar_position: 5 +--- + +# Processing Engine Run Facet +The Processing Engine Run Facet provides detailed information about the processing engine that executed the job. This facet is commonly used to track and document the specific engine and its version, ensuring reproducibility and aiding in debugging processes. + +| Property | Description | Type | Example | Required | +|---------------------------|-----------------------------------------------------------------------------|--------|-----------|----------| +| version | The version of the processing engine, such as Airflow or Spark. This helps in identifying the exact environment in which the job was run. | string | "2.5.0" | Yes | +| name | The name of the processing engine, for example, Airflow or Spark. This is useful for categorizing and filtering jobs based on the engine used. | string | "Airflow" | Yes | +| openlineageAdapterVersion | The version of the OpenLineage adapter package used, such as the OpenLineage Airflow integration package version. This can be helpful for troubleshooting and ensuring compatibility. | string | "0.19.0" | No | + +Example use case: When a data pipeline job fails, the Processing Engine Run Facet can be used to quickly identify the version and type of processing engine that was used, making it easier to replicate the issue and find a solution. + +The facet specification can be found [here](https://openlineage.io/spec/facets/1-1-1/ProcessingEngineRunFacet.json#/$defs/ProcessingEngineRunFacet). \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/spec/facets/run-facets/run-facets.md b/versioned_docs/version-1.24.1/spec/facets/run-facets/run-facets.md new file mode 100644 index 0000000..ffdc9c0 --- /dev/null +++ b/versioned_docs/version-1.24.1/spec/facets/run-facets/run-facets.md @@ -0,0 +1,7 @@ +--- +sidebar_position: 1 +--- + +# Run Facets + +Run Facets apply to a specific `instance` of a particular running _job_. Every run will have a uniquely identifiable `run ID` that is usually a [UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier), that can later be tracked. It is recommended to use [UUIDv7](https://datatracker.ietf.org/doc/draft-ietf-uuidrev-rfc4122bis/) version of the format. diff --git a/versioned_docs/version-1.24.1/spec/job-hierarchy-events.png b/versioned_docs/version-1.24.1/spec/job-hierarchy-events.png new file mode 100644 index 0000000000000000000000000000000000000000..55cd3d14e12d26a9977e05c738437806b8c40c4d GIT binary patch literal 32418 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 literal 0 HcmV?d00001 diff --git a/versioned_docs/version-1.24.1/spec/job-hierarchy-jobs.png b/versioned_docs/version-1.24.1/spec/job-hierarchy-jobs.png new file mode 100644 index 0000000000000000000000000000000000000000..ca55b3b8d1d5f058ae82cf6573fd222ff8de61c8 GIT binary patch literal 35866 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

7g#pdG29br6N(&6ah8omk1W0 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 literal 0 HcmV?d00001 diff --git a/versioned_docs/version-1.24.1/client/mqz_jobs.png b/versioned_docs/version-1.24.1/client/mqz_jobs.png new file mode 100644 index 0000000000000000000000000000000000000000..444ee6b11acc7178783e0d18efd6338dba132a79 GIT binary patch literal 163328 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�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 DMAt{^ literal 0 HcmV?d00001 diff --git a/versioned_docs/version-1.24.1/client/python.md b/versioned_docs/version-1.24.1/client/python.md new file mode 100644 index 0000000..1f80060 --- /dev/null +++ b/versioned_docs/version-1.24.1/client/python.md @@ -0,0 +1,953 @@ +--- +sidebar_position: 5 +--- + +import Tabs from '@theme/Tabs'; +import TabItem from '@theme/TabItem'; + +# Python + +## Overview + +The Python client is the basis of existing OpenLineage integrations such as Airflow and dbt. + +The client enables the creation of lineage metadata events with Python code. +The core data structures currently offered by the client are the `RunEvent`, `RunState`, `Run`, `Job`, `Dataset`, +and `Transport` classes. These either configure or collect data for the emission of lineage events. + +You can use the client to create your own custom integrations. + +## Installation + +Download the package using `pip` with +```bash +pip install openlineage-python +``` + +To install the package from source, use +```bash +python -m pip install . +``` + +## Configuration + +We recommend configuring the client with an `openlineage.yml` file that contains all the +details of how to connect to your OpenLineage backend. + +You can make this file available to the client in three ways (the list also presents precedence of the configuration): + +1. Set an `OPENLINEAGE_CONFIG` environment variable to a file path: `OPENLINEAGE_CONFIG=path/to/openlineage.yml`. +2. Place an `openlineage.yml` file in the current working directory (the absolute path of the directory where your script or process is currently running). +3. Place an `openlineage.yml` file under `.openlineage/` in the user's home directory (`~/.openlineage/openlineage.yml`). + +In `openlineage.yml`, use a standard `Transport` interface to specify the transport type +(`http`, `console`, `kafka`, `file`, or [custom](#custom-transport-type)) and authorization parameters. +See the [example config file](#built-in-transport-types) for each transport type. + +If there is no config file found, the OpenLineage client looks at environment variables for [HTTP transport](#http-transport-configuration-with-environment-variables). + +At the end, if no configuration is found, ``ConsoleTransport`` is used, the events are printed in the console. + +### Environment Variables + +The following environment variables are available to use: + +| Name | Description | Example | Since | +|----------------------------|-------------------------------------------------------------------|-------------------------|--------| +| OPENLINEAGE_CONFIG | The path to the YAML configuration file | path/to/openlineage.yml | | +| OPENLINEAGE_CLIENT_LOGGING | Logging level of OpenLineage client and its child modules | DEBUG | | +| OPENLINEAGE_DISABLED | When `true`, OpenLineage will not emit events (default: false) | false | 0.9.0 | +| OPENLINEAGE_URL | The URL to send lineage events to (also see OPENLINEAGE_ENDPOINT) | https://myapp.com | | +| OPENLINEAGE_ENDPOINT | Endpoint to which events are sent (default: api/v1/lineage) | api/v2/events | | +| OPENLINEAGE_API_KEY | Token included in the Authentication HTTP header as the Bearer | secret_token_123 | | + +If you are using Airflow integration, there are additional [environment variables available](../integrations/airflow/usage.md#environment-variables). + +#### Dynamic configuration with environment variables + +You can also configure the client with dynamic environment variables. +Environment variables that configure the OpenLineage client follow a specific pattern. All variables that affect the client configuration start with the prefix `OPENLINEAGE__`, followed by nested keys separated by double underscores (`__`). + +##### Key Features + +1. Prefix Requirement: All environment variables must begin with `OPENLINEAGE__`. +2. Sections Separation: Configuration sections are separated using double underscores `__` to form the hierarchy. +3. Lowercase Conversion: Environment variable values are automatically converted to lowercase. +4. JSON String Support: You can pass a JSON string at any level of the configuration hierarchy, which will be merged into the final configuration structure. +5. Hyphen Restriction: Since environment variable names cannot contain `-` (hyphen), if a name strictly requires a hyphen, use a JSON string as the value of the environment variable. +6. Precedence Rules: +* Top-level keys have precedence and will not be overwritten by more nested entries. +* For example, `OPENLINEAGE__TRANSPORT='{..}'` will not have its keys overwritten by `OPENLINEAGE__TRANSPORT__AUTH__KEY='key'`. + +##### Dynamic Alias for Transport Variables + +To facilitate easier management of environment variables, aliases are dynamically created for certain variables like `OPENLINEAGE_URL`. If `OPENLINEAGE_URL` is set, it automatically translates into specific transport configurations +that can be used with Composite transport with `default_http` as the name of the HTTP transport. + +Alias rules are following: +* If environment variable `OPENLINEAGE_URL`="http://example.com" is set, it would insert following environment variables: +```sh +OPENLINEAGE__TRANSPORT__TRANSPORTS__DEFAULT_HTTP__TYPE="http" +OPENLINEAGE__TRANSPORT__TRANSPORTS__DEFAULT_HTTP__URL="http://example.com" +``` +* Similarly if environment variable `OPENLINEAGE_API_KEY`="random_key" is set, it will be translated to: +```sh +OPENLINEAGE__TRANSPORT__TRANSPORTS__DEFAULT_HTTP__AUTH='{"type": "api_key", "apiKey": "random_key"}' +``` +qually with environment variable `OPENLINEAGE_ENDPOINT`="api/v1/lineage", that translates to: +```sh +OPENLINEAGE__TRANSPORT__TRANSPORTS__DEFAULT_HTTP__ENDPOINT="api/v1/lineage" +``` +* If one does not want to use aliased HTTP transport in Composite Transport, they can set `OPENLINEAGE__TRANSPORT__TRANSPORTS__DEFAULT_HTTP` to `{}`. + + +#### Examples + + + + +Setting following environment variables: + +```sh +OPENLINEAGE__TRANSPORT__TYPE=http +OPENLINEAGE__TRANSPORT__URL=http://localhost:5050 +OPENLINEAGE__TRANSPORT__ENDPOINT=/api/v1/lineage +OPENLINEAGE__TRANSPORT__AUTH='{"type":"api_key", "apiKey":"random_token"}' +OPENLINEAGE__TRANSPORT__COMPRESSION=gzip +``` + +is equivalent to passing following YAML configuration: +```yaml +transport: + type: http + url: http://localhost:5050 + endpoint: api/v1/lineage + auth: + type: api_key + apiKey: random_token + compression: gzip +``` + + + + +Setting following environment variables: + +```sh +OPENLINEAGE__TRANSPORT__TYPE=composite +OPENLINEAGE__TRANSPORT__TRANSPORTS__FIRST__TYPE=http +OPENLINEAGE__TRANSPORT__TRANSPORTS__FIRST__URL=http://localhost:5050 +OPENLINEAGE__TRANSPORT__TRANSPORTS__FIRST__ENDPOINT=/api/v1/lineage +OPENLINEAGE__TRANSPORT__TRANSPORTS__FIRST__AUTH='{"type":"api_key", "apiKey":"random_token"}' +OPENLINEAGE__TRANSPORT__TRANSPORTS__FIRST__COMPRESSION=gzip +OPENLINEAGE__TRANSPORT__TRANSPORTS__SECOND__TYPE=console +``` + +is equivalent to passing following YAML configuration: +```yaml +transport: + type: composite + transports: + first: + type: http + url: http://localhost:5050 + endpoint: api/v1/lineage + auth: + type: api_key + apiKey: random_token + compression: gzip + second: + type: console +``` + + + + +Setting following environment variables: + +```sh +OPENLINEAGE__TRANSPORT='{"type":"console"}' +OPENLINEAGE__TRANSPORT__TYPE=http +``` + +is equivalent to passing following YAML configuration: +```yaml +transport: + type: console +``` + + + + +Setting following environment variables: + +```sh +OPENLINEAGE__TRANSPORT__TYPE=kafka +OPENLINEAGE__TRANSPORT__TOPIC=my_topic +OPENLINEAGE__TRANSPORT__CONFIG='{"bootstrap.servers": "localhost:9092,another.host:9092", "acks": "all", "retries": 3}' +OPENLINEAGE__TRANSPORT__FLUSH=true +OPENLINEAGE__TRANSPORT__MESSAGE_KEY=some-value +``` + +is equivalent to passing following YAML configuration: +```yaml +transport: + type: kafka + topic: my_topic + config: + bootstrap.servers: localhost:9092,another.host:9092 + acks: all + retries: 3 + flush: true + message_key: some-value # this has been aliased to messageKey +``` + + + + +#### HTTP transport configuration with environment variables + +For backwards compatibility, the simplest HTTP transport configuration, with only a subset of its config, can be done with environment variables +(all other transport types are only configurable with YAML file). This setup can be done with the following +environment variables: + +- `OPENLINEAGE_URL` (required) +- `OPENLINEAGE_ENDPOINT` (optional, default: `api/v1/lineage`) +- `OPENLINEAGE_API_KEY` (optional). + +## Built-in Transport Types + +### HTTP + +Allows sending events to HTTP endpoint, using [requests](https://requests.readthedocs.io/). + +#### Configuration + +- `type` - string, must be `"http"`. Required. +- `url` - string, base url for HTTP requests. Required. +- `endpoint` - string specifying the endpoint to which events are sent, appended to `url`. Optional, default: `api/v1/lineage`. +- `timeout` - float specifying timeout (in seconds) value used while connecting to server. Optional, default: `5`. +- `verify` - boolean specifying whether the client should verify TLS certificates from the backend. Optional, default: `true`. +- `auth` - dictionary specifying authentication options. Optional, by default no authorization is used. If set, requires the `type` property. + - `type` - string specifying the "api_key" or the fully qualified class name of your TokenProvider. Required if `auth` is provided. + - `apiKey` - string setting the Authentication HTTP header as the Bearer. Required if `type` is `api_key`. +- `compression` - string, name of algorithm used by HTTP client to compress request body. Optional, default value `null`, allowed values: `gzip`. Added in v1.13.0. +- `custom_headers` - dictionary of additional headers to be sent with each request. Optional, default: `{}`. + +#### Behavior + +Events are serialized to JSON, and then are send as HTTP POST request with `Content-Type: application/json`. + +#### Examples + + + + +```yaml +transport: + type: http + url: https://backend:5000 + endpoint: api/v1/lineage + timeout: 5 + verify: false + auth: + type: api_key + apiKey: f048521b-dfe8-47cd-9c65-0cb07d57591e + compression: gzip +``` + + + + +```python +from openlineage.client import OpenLineageClient +from openlineage.client.transport.http import ApiKeyTokenProvider, HttpConfig, HttpCompression, HttpTransport + +http_config = HttpConfig( + url="https://backend:5000", + endpoint="api/v1/lineage", + timeout=5, + verify=False, + auth=ApiKeyTokenProvider({"apiKey": "f048521b-dfe8-47cd-9c65-0cb07d57591e"}), + compression=HttpCompression.GZIP, +) + +client = OpenLineageClient(transport=HttpTransport(http_config)) +``` + + + + +### Console + +This straightforward transport emits OpenLineage events directly to the console through a logger. +No additional configuration is required. + +#### Configuration + +- `type` - string, must be `"console"`. Required. + +#### Behavior + +Events are serialized to JSON. Then each event is logged with `INFO` level to logger with name `openlineage.client.transport.console`. + +#### Notes + +Be cautious when using the `DEBUG` log level, as it might result in double-logging due to the `OpenLineageClient` also logging. + +#### Examples + + + + +```yaml +transport: + type: console +``` + + + + +```python +from openlineage.client import OpenLineageClient +from openlineage.client.transport.console import ConsoleConfig, ConsoleTransport + +console_config = ConsoleConfig() +client = OpenLineageClient(transport=ConsoleTransport(console_config)) +``` + + + + +### Kafka + +Kafka transport requires `confluent-kafka` package to be additionally installed. +It can be installed also by specifying kafka client extension: `pip install openlineage-python[kafka]` + +#### Configuration + +- `type` - string, must be `"kafka"`. Required. +- `topic` - string specifying the topic on what events will be sent. Required. +- `config` - a dictionary containing a Kafka producer config as in [Kafka producer config](https://docs.confluent.io/platform/current/clients/confluent-kafka-python/html/index.html#kafka-client-configuration). Required. +- `flush` - boolean specifying whether Kafka should flush after each event. Optional, default: `true`. +- `messageKey` - string, key for all Kafka messages produced by transport. Optional, default value described below. Added in v1.13.0. + + Default values for `messageKey` are: + - `run:{parentJob.namespace}/{parentJob.name}` - for RunEvent with parent facet + - `run:{job.namespace}/{job.name}` - for RunEvent + - `job:{job.namespace}/{job.name}` - for JobEvent + - `dataset:{dataset.namespace}/{dataset.name}` - for DatasetEvent + +#### Behavior + +- Events are serialized to JSON, and then dispatched to the Kafka topic. +- If `flush` is `true`, messages will be flushed to the topic after each event being sent. + +#### Notes + +It is recommended to provide `messageKey` if Job hierarchy is used. It can be any string, but it should be the same for all jobs in +hierarchy, like `Airflow task -> Spark application -> Spark task runs`. + +#### Using with Airflow integration + +There's a caveat for using `KafkaTransport` with Airflow integration. In this integration, a Kafka producer needs to be created +for each OpenLineage event. +It happens due to the Airflow execution and plugin model, which requires us to send messages from worker processes. +These are created dynamically for each task execution. + +#### Examples + + + + +```yaml +transport: + type: kafka + topic: my_topic + config: + bootstrap.servers: localhost:9092,another.host:9092 + acks: all + retries: 3 + flush: true + messageKey: some-value +``` + + + + +```python +from openlineage.client import OpenLineageClient +from openlineage.client.transport.kafka import KafkaConfig, KafkaTransport + +kafka_config = KafkaConfig( + topic="my_topic", + config={ + "bootstrap.servers": "localhost:9092,another.host:9092", + "acks": "all", + "retries": "3", + }, + flush=True, + messageKey="some", +) + +client = OpenLineageClient(transport=KafkaTransport(kafka_config)) +``` + + + + +### File + +Designed mainly for integration testing, the `FileTransport` emits OpenLineage events to a given file(s). + +#### Configuration + +- `type` - string, must be `"file"`. Required. +- `log_file_path` - string specifying the path of the file or file prefix (when `append` is true). Required. +- `append` - boolean, see *Behavior* section below. Optional, default: `false`. + +#### Behavior + +- If the target file is absent, it's created. +- If `append` is `true`, each event will be appended to a single file `log_file_path`, separated by newlines. +- If `append` is `false`, each event will be written to as separated file with name `{log_file_path}-{datetime}`. + +#### Examples + + + + +```yaml +transport: + type: file + log_file_path: /path/to/your/file + append: false +``` + + + + +```python +from openlineage.client import OpenLineageClient +from openlineage.client.transport.file import FileConfig, FileTransport + +file_config = FileConfig( + log_file_path="/path/to/your/file", + append=False, +) + +client = OpenLineageClient(transport=FileTransport(file_config)) +``` + + + + +### Composite + +The `CompositeTransport` is designed to combine multiple transports, allowing event emission to several destinations. This is useful when events need to be sent to multiple targets, such as a logging system and an API endpoint. The events are delivered sequentially - one after another in a defined order. + +#### Configuration + +- `type` - string, must be "composite". Required. +- `transports` - a list or a map of transport configurations. Required. +- `continue_on_failure` - boolean flag, determines if the process should continue even when one of the transports fails. Default is `false`. + +#### Behavior + +- The configured transports will be initialized and used in sequence to emit OpenLineage events. +- If `continue_on_failure` is set to `false`, a failure in one transport will stop the event emission process, and an exception will be raised. +- If `continue_on_failure` is `true`, the failure will be logged, but the remaining transports will still attempt to send the event. + +#### Notes for Multiple Transports +The composite transport can be used with any OpenLineage transport (e.g. `HttpTransport`, `KafkaTransport`, etc). + +The `transports` configuration can be provided in two formats: + +1. A list of transport configurations, where each transport may optionally include a `name` field. +2. A map of transport configurations, where the key acts as the name for each transport. +The map format is particularly useful for configurations set via environment variables. + +##### Why are transport names used? +Transport names are not required for basic functionality. Their primary purpose is to enable configuration of composite transports via environment variables, which is only supported when names are defined. + +#### Examples + + + + +```yaml +transport: + type: composite + continueOnFailure: true + transports: + - type: http + url: http://example.com/api + name: my_http + - type: http + url: http://localhost:5000 + endpoint: /api/v1/lineage +``` + + + + +```yaml +transport: + type: composite + continueOnFailure: true + transports: + my_http: + type: http + url: http://example.com/api + local_http: + type: http + url: http://localhost:5000 + endpoint: /api/v1/lineage +``` + + + + +```python +from openlineage.client import OpenLineageClient +from openlineage.client.transport.composite import CompositeTransport, CompositeConfig + +config = CompositeConfig.from_dict( + { + "type": "composite", + "transports": [ + { + "type": "kafka", + "config": {"bootstrap.servers": "localhost:9092"}, + "topic": "random-topic", + "messageKey": "key", + "flush": False, + }, + {"type": "console"}, + ], + }, + ) +client = OpenLineageClient(transport=CompositeTransport(config)) +``` + + + +### Custom Transport Type + +To implement a custom transport, follow the instructions in [`transport.py`](https://github.com/OpenLineage/OpenLineage/blob/main/client/python/openlineage/client/transport/transport.py). + +The `type` property (required) must be a fully qualified class name that can be imported. + +## Environment Variables Run Facet + +To include specific environment variables in OpenLineage events, the `OpenLineageClient` can add them as a facet called `EnvironmentVariablesRunFacet`. This feature allows you to specify which environment variables should be collected and attached to each emitted event. + +To enable this, configure the `environment_variables` option within the `facets` section of your `OpenLineageClient` configuration. + + + + +```yaml +facets: + environment_variables: + - VAR1 + - VAR2 +``` + + + + +```sh +OPENLINEAGE__FACETS__ENVIRONMENT_VARIABLES='["VAR1", "VAR2"]' +``` + + + + +## Getting Started + +To try out the client, follow the steps below to install and explore OpenLineage, Marquez (the reference implementation of OpenLineage), and the client itself. Then, the instructions will show you how to use these tools to add a run event and datasets to an existing namespace. + +### Prerequisites +- Docker 17.05+ +- Docker Compose 1.29.1+ +- Git (preinstalled on most versions of MacOS; verify your version with `git version`) +- 4 GB of available memory (the minimum for Docker — more is strongly recommended) + +### Install OpenLineage and Marquez + +Clone the Marquez Github repository: +```bash +git clone https://github.com/MarquezProject/marquez.git +``` + +### Install the Python client +```bash +pip install openlineage-python +``` + +### Start Docker and Marquez +Start Docker Desktop +Run Marquez with preloaded data: +```bash +cd marquez +./docker/up.sh --seed +``` + +Marquez should be up and running at `http://localhost:3000`. + +Take a moment to explore Marquez to get a sense of how metadata is displayed in the UI. Namespaces – the global contexts for runs and datasets – can be found in the top right corner, and icons for jobs and runs can be found in a tray along the left side. + +Next, configure OpenLineage and add a script to your project that will generate a new job and new datasets within an existing namespace (here we’re using the `food_delivery` namespace that got passed to Marquez with the `–seed` argument we used earlier). + +Create a directory for your script: +```bash +.. +mkdir python_scripts && cd python_scripts +``` + +In the python_scripts directory, create a Python script (we used the name `generate_events.py` for ours) and an `openlineage.yml` file. + +In `openlineage.yml`, define a transport type and URL to tell OpenLineage where and how to send metadata: + +```yaml +transport: + type: http + url: http://localhost:5000 +``` + +In `generate_events.py`, import the Python client and the methods needed to create a job and datasets. Also required (to create a run): the `datetime` and `uuid` packages: + +```python +from openlineage.client import OpenLineageClient +from openlineage.client.event_v2 import ( + Dataset, + InputDataset, + Job, + OutputDataset, + Run, + RunEvent, + RunState, +) +from openlineage.client.uuid import generate_new_uuid +from datetime import datetime +``` + +Then, in the same file, initialize the Python client: +```python +client = OpenLineageClient.from_environment() +``` + +It is also possible to specify parameters such as URL for client to connect to, without using environment variables or `openlineage.yaml` file, by directly setting it up when instantiating OpenLineageClient: + +```python +client = OpenLineageClient(url="http://localhost:5000") +``` + +> For more details about options to setup OpenLineageClient such as API tokens or HTTP transport settings, please refer to the following [example](https://github.com/OpenLineage/OpenLineage/blob/main/client/python/tests/test_http.py) + + +Specify the producer of the new lineage metadata with a string: +```python +producer = "OpenLineage.io/website/blog" +``` + +Now you can create some basic dataset objects. These require a namespace and name: +```python +inventory = Dataset(namespace="food_delivery", name="public.inventory") +menus = Dataset(namespace="food_delivery", name="public.menus_1") +orders = Dataset(namespace="food_delivery", name="public.orders_1") +``` + +You can also create a job object (we’ve borrowed this one from the existing `food_delivery` namespace): +```python +job = Job(namespace="food_delivery", name="example.order_data") +``` + +To create a run object you’ll need to specify a unique ID: +```python +run = Run(runId=str(generate_new_uuid())) +``` + +a START run event: +```python +client.emit( + RunEvent( + eventType=RunState.START, + eventTime=datetime.now().isoformat(), + run=run, + job=job, + producer=producer, + ) +) +``` + +and, finally, a COMPLETE run event: +```python +client.emit( + RunEvent( + eventType=RunState.COMPLETE, + eventTime=datetime.now().isoformat(), + run=run, job=job, producer=producer, + inputs=[inventory], + outputs=[menus, orders], + ) +) +``` + +Now you have a complete script for creating datasets and a run event! Execute it in the terminal to send the metadata to Marquez: +```bash +python3 generate_scripts.py +``` + +Marquez will update itself automatically, so the new job and datasets should now be visible in the UI. Clicking on the jobs icon (the icon with the three interlocking gears), will make the `example.order_data` job appear in the list of jobs: + +![the Marquez jobs list](./mqz_jobs.png) + +When you click on the job, you will see a new map displaying the job, input and outputs we created with our script: + +![the Marquez graph](./mqz_graph.png) + +## Full Example Source Code + +```python +#!/usr/bin/env python3 +from datetime import datetime, timedelta, timezone +from random import random + +from openlineage.client.client import OpenLineageClient, OpenLineageClientOptions +from openlineage.client.event_v2 import ( + Dataset, + InputDataset, + Job, + OutputDataset, + Run, + RunEvent, + RunState, +) +from openlineage.client.facet_v2 import ( + nominal_time_run, + schema_dataset, + source_code_location_job, + sql_job, +) +from openlineage.client.uuid import generate_new_uuid + +PRODUCER = "https://github.com/openlineage-user" +namespace = "python_client" +dag_name = "user_trends" + +# update to your host +url = "http://mymarquez.host:5000" +api_key = "1234567890ckcu028rzu5l" + +client = OpenLineageClient( + url=url, + # optional api key in case marquez requires it. When running marquez in + # your local environment, you usually do not need this. + options=OpenLineageClientOptions(api_key=api_key), +) + +# If you want to log to a file instead of Marquez +# from openlineage.client import OpenLineageClient +# from openlineage.client.transport.file import FileConfig, FileTransport +# +# file_config = FileConfig( +# log_file_path="ol.json", +# append=True, +# ) +# +# client = OpenLineageClient(transport=FileTransport(file_config)) + + +# generates job facet +def job(job_name, sql, location): + facets = {"sql": sql_job.SQLJobFacet(query=sql)} + if location != None: + facets.update( + { + "sourceCodeLocation": source_code_location_job.SourceCodeLocationJobFacet( + "git", location + ) + } + ) + return Job(namespace=namespace, name=job_name, facets=facets) + + +# geneartes run racet +def run(run_id, hour): + return Run( + runId=run_id, + facets={ + "nominalTime": nominal_time_run.NominalTimeRunFacet( + nominalStartTime=f"2022-04-14T{twoDigits(hour)}:12:00Z", + # nominalEndTime=None + ) + }, + ) + + +# generates dataset +def dataset(name, schema=None, ns=namespace): + if schema == None: + facets = {} + else: + facets = {"schema": schema} + return Dataset(namespace=ns, name=name, facets=facets) + + +# generates output dataset +def outputDataset(dataset, stats): + output_facets = {"stats": stats, "outputStatistics": stats} + return OutputDataset(dataset.namespace, + dataset.name, + facets=dataset.facets, + outputFacets=output_facets) + + +# generates input dataset +def inputDataset(dataset, dq): + input_facets = { + "dataQuality": dq, + } + return InputDataset(dataset.namespace, dataset.name, + facets=dataset.facets, + inputFacets=input_facets) + + +def twoDigits(n): + if n < 10: + result = f"0{n}" + elif n < 100: + result = f"{n}" + else: + raise f"error: {n}" + return result + + +now = datetime.now(timezone.utc) + + +# generates run Event +def runEvents(job_name, sql, inputs, outputs, hour, min, location, duration): + run_id = str(generate_new_uuid()) + myjob = job(job_name, sql, location) + myrun = run(run_id, hour) + started_at = now + timedelta(hours=hour, minutes=min, seconds=20 + round(random() * 10)) + ended_at = started_at + timedelta(minutes=duration, seconds=20 + round(random() * 10)) + return ( + RunEvent( + eventType=RunState.START, + eventTime=started_at.isoformat(), + run=myrun, + job=myjob, + producer=PRODUCER, + inputs=inputs, + outputs=outputs, + ), + RunEvent( + eventType=RunState.COMPLETE, + eventTime=ended_at.isoformat(), + run=myrun, + job=myjob, + producer=PRODUCER, + inputs=inputs, + outputs=outputs, + ), + ) + + +# add run event to the events list +def addRunEvents(events, job_name, sql, inputs, outputs, hour, minutes, location=None, duration=2): + (start, complete) = runEvents(job_name, sql, inputs, outputs, hour, minutes, location, duration) + events.append(start) + events.append(complete) + + +events = [] + +# create dataset data +for i in range(0, 5): + user_counts = dataset("tmp_demo.user_counts") + user_history = dataset( + "temp_demo.user_history", + schema_dataset.SchemaDatasetFacet( + fields=[ + schema_dataset.SchemaDatasetFacetFields( + name="id", type="BIGINT", description="the user id" + ), + schema_dataset.SchemaDatasetFacetFields( + name="email_domain", type="VARCHAR", description="the user id" + ), + schema_dataset.SchemaDatasetFacetFields( + name="status", type="BIGINT", description="the user id" + ), + schema_dataset.SchemaDatasetFacetFields( + name="created_at", + type="DATETIME", + description="date and time of creation of the user", + ), + schema_dataset.SchemaDatasetFacetFields( + name="updated_at", + type="DATETIME", + description="the last time this row was updated", + ), + schema_dataset.SchemaDatasetFacetFields( + name="fetch_time_utc", + type="DATETIME", + description="the time the data was fetched", + ), + schema_dataset.SchemaDatasetFacetFields( + name="load_filename", + type="VARCHAR", + description="the original file this data was ingested from", + ), + schema_dataset.SchemaDatasetFacetFields( + name="load_filerow", + type="INT", + description="the row number in the original file", + ), + schema_dataset.SchemaDatasetFacetFields( + name="load_timestamp", + type="DATETIME", + description="the time the data was ingested", + ), + ] + ), + "snowflake://", + ) + + create_user_counts_sql = """CREATE OR REPLACE TABLE TMP_DEMO.USER_COUNTS AS ( + SELECT DATE_TRUNC(DAY, created_at) date, COUNT(id) as user_count + FROM TMP_DEMO.USER_HISTORY + GROUP BY date + )""" + + # location of the source code + location = "https://github.com/some/airflow/dags/example/user_trends.py" + + # run simulating Airflow DAG with snowflake operator + addRunEvents( + events, + dag_name + ".create_user_counts", + create_user_counts_sql, + [user_history], + [user_counts], + i, + 11, + location, + ) + + +for event in events: + from openlineage.client.serde import Serde + + print(event) + print(Serde.to_json(event)) + # time.sleep(1) + client.emit(event) + +``` +The resulting lineage events received by Marquez would look like this. + +![the Marquez graph](./mqz_graph_example.png) diff --git a/versioned_docs/version-1.24.1/datamodel.svg b/versioned_docs/version-1.24.1/datamodel.svg new file mode 100644 index 0000000..d2f7f54 --- /dev/null +++ b/versioned_docs/version-1.24.1/datamodel.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/development/_category_.json b/versioned_docs/version-1.24.1/development/_category_.json new file mode 100644 index 0000000..3f59497 --- /dev/null +++ b/versioned_docs/version-1.24.1/development/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Development", + "position": 8 +} diff --git a/versioned_docs/version-1.24.1/development/developing/_category.json b/versioned_docs/version-1.24.1/development/developing/_category.json new file mode 100644 index 0000000..18dc469 --- /dev/null +++ b/versioned_docs/version-1.24.1/development/developing/_category.json @@ -0,0 +1,8 @@ +{ + "label": "Developing with OpenLineage", + "position": 4, + "link": { + "type": "doc", + "id": "developing" + } +} \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/development/developing/developing.md b/versioned_docs/version-1.24.1/development/developing/developing.md new file mode 100644 index 0000000..d2382cd --- /dev/null +++ b/versioned_docs/version-1.24.1/development/developing/developing.md @@ -0,0 +1,48 @@ +--- +sidebar_position: 1 +--- + +# Developing With OpenLineage + +As there are hundreds and possibly thousands databases, query engines and other tools you could use to process, create and move data, there's great chance that existing OpenLineage integration won't cover your needs. + +However, OpenLineage project also provides libraries you could use to write your own integration. + +### Clients + +For [Python](../../client/python.md) and [Java](../../client/java/java.md), we've created clients that you can use to properly create and emit OpenLineage events to HTTP, Kafka, and other consumers. + +### API Documentation + +- [OpenAPI documentation](https://openlineage.io/apidocs/openapi/) +- [Java Doc](https://openlineage.io/apidocs/javadoc/) + +### Common Library (Python) + +Getting lineage from systems like BigQuery or Redshift isn't necessarily tied to orchestrator or processing engine you're using. For this reason, we've extracted +that functionality from our Airflow library and [packaged it for separate use](https://pypi.org/project/openlineage-integration-common/). + +### Environment Variables + +The list of available environment variables for **Python** can be found [here](../../client/python.md#environment-variables). +The list of available environment variables for **Java** can be found [here](../../client/java/java.md#environment-variables). + +### SQL parser + +We've created SQL parser that allows you to extract lineage from SQL statements. The parser is implemented in Rust; however, it's also available as a [Python library](https://pypi.org/project/openlineage-sql/). +You can take a look at its code on [GitHub](https://github.com/OpenLineage/OpenLineage/tree/main/integration/sql). + +## Contributing + +If contributing changes, additions or fixes, please include the following header in any new files: + +``` +/* +/* Copyright 2018-2024 contributors to the OpenLineage project +/* SPDX-License-Identifier: Apache-2.0 +*/ +``` + +There is a pre-commit step that checks license in headers for new files when pull requests are opened. + +Thanks for your contributions to the project! diff --git a/versioned_docs/version-1.24.1/development/developing/java/_category_.json b/versioned_docs/version-1.24.1/development/developing/java/_category_.json new file mode 100644 index 0000000..5d19ed2 --- /dev/null +++ b/versioned_docs/version-1.24.1/development/developing/java/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Java", + "position": 2 +} diff --git a/versioned_docs/version-1.24.1/development/developing/java/adding_metrics.md b/versioned_docs/version-1.24.1/development/developing/java/adding_metrics.md new file mode 100644 index 0000000..a48899f --- /dev/null +++ b/versioned_docs/version-1.24.1/development/developing/java/adding_metrics.md @@ -0,0 +1,18 @@ +--- +title: Metrics Backends +sidebar_position: 2 +--- + +To integrate additional metrics backend into the OpenLineage client, implement the `MeterRegistryFactory` interface and ensure it is utilized by the `MicrometerProvider`'s `getMetricsBuilders` method. + +The `MeterRegistryFactory` interface is designed to construct a `MeterRegistry` object from the OpenLineage configuration map. This interface allows the integration of either custom implementations or existing ones provided by Micrometer. + +If your metrics backend requires external dependencies (e.g., `io.micrometer:micrometer-registry-otlp:latest`), add them to your project's build.gradle as compileOnly. This ensures they are available during compilation but optional at runtime. + +Use `ReflectionUtils.hasClass` to check the existence of required classes on the classpath before using them. This prevents runtime failures due to missing dependencies. + +``` + if (ReflectionUtils.hasClass("io.micrometer.statsd.StatsdMeterRegistry")) { + builders.add(new StatsDMeterRegistryFactory()); + } +``` \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/development/developing/java/setup.md b/versioned_docs/version-1.24.1/development/developing/java/setup.md new file mode 100644 index 0000000..e3f7978 --- /dev/null +++ b/versioned_docs/version-1.24.1/development/developing/java/setup.md @@ -0,0 +1,8 @@ +--- +title: Setup a development environment +sidebar_position: 1 +--- + +:::info +This page needs your contribution! Please contribute new examples using the edit link at the bottom. +::: \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/development/developing/java/troubleshooting/_category_.json b/versioned_docs/version-1.24.1/development/developing/java/troubleshooting/_category_.json new file mode 100644 index 0000000..c99297e --- /dev/null +++ b/versioned_docs/version-1.24.1/development/developing/java/troubleshooting/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Troubleshooting", + "position": 1 +} \ No newline at end of file diff --git a/versioned_docs/version-1.24.1/development/developing/java/troubleshooting/logging.md b/versioned_docs/version-1.24.1/development/developing/java/troubleshooting/logging.md new file mode 100644 index 0000000..5356f43 --- /dev/null +++ b/versioned_docs/version-1.24.1/development/developing/java/troubleshooting/logging.md @@ -0,0 +1,315 @@ +--- +title: Logging +sidebar_position: 1 +--- + +OpenLineage Java library is based on [slf4j](https://www.slf4j.org/) when generating logs. Being able to emit logs for various purposes is very helpful when troubleshooting OpenLineage. + +Consider the following sample java code that emits OpenLineage events: + +```java +package ol.test; + +import io.openlineage.client.OpenLineage; +import io.openlineage.client.OpenLineageClient; +import io.openlineage.client.OpenLineage.RunEvent; +import io.openlineage.client.OpenLineage.InputDataset; +import io.openlineage.client.OpenLineage.Job; +import io.openlineage.client.OpenLineage.JobFacets; +import io.openlineage.client.OpenLineage.OutputDataset; +import io.openlineage.client.OpenLineage.Run; +import io.openlineage.client.OpenLineage.RunFacets; +import io.openlineage.client.OpenLineage.RunEvent.EventType; +import io.openlineage.client.transports.HttpTransport; +import io.openlineage.client.utils.UUIDUtils; + +import java.net.URI; +import java.time.ZoneId; +import java.time.ZonedDateTime; +import java.util.Arrays; +import java.util.List; +import java.util.UUID; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * sample openlinage client code + */ +public class OpenLineageClientTest +{ + private static Logger logger = LoggerFactory.getLogger(OpenLineageClientTest.class); + + public static void main( String[] args ) + { + logger.info("Running OpenLineage Client Test..."); + try { + + OpenLineageClient client = OpenLineageClient.builder() + .transport( + HttpTransport.builder() + .uri("http://localhost:5000") + .apiKey("abcdefghijklmn") + .build()) + .build(); + + // create one start event for testing + RunEvent event = buildEvent(EventType.START, null); + + // emit the event + client.emit(event); + + // another event to COMPLETE the run + event = buildEvent(EventType.COMPLETE, event.getRun().getRunId()); + + // emit the second COMPLETE event + client.emit(event); + + } catch (Exception e) { + e.printStackTrace(); + } + } + + // sample code to build event + public static RunEvent buildEvent(EventType eventType, UUID runId) { + ZonedDateTime now = ZonedDateTime.now(ZoneId.of("UTC")); + URI producer = URI.create("producer"); + OpenLineage ol = new OpenLineage(producer); + + if (runId == null) { + runId = UUIDUtils.generateNewUUID(); + } + + // run facets + RunFacets runFacets = + ol.newRunFacetsBuilder() + .nominalTime( + ol.newNominalTimeRunFacetBuilder() + .nominalStartTime(now) + .nominalEndTime(now) + .build()) + .build(); + + // a run is composed of run id, and run facets + Run run = ol.newRunBuilder().runId(runId).facets(runFacets).build(); + + // job facets + JobFacets jobFacets = ol.newJobFacetsBuilder().build(); + + // job + String name = "jobName"; + String namespace = "namespace"; + Job job = ol.newJobBuilder().namespace(namespace).name(name).facets(jobFacets).build(); + + // input dataset + List inputs = + Arrays.asList( + ol.newInputDatasetBuilder() + .namespace("ins") + .name("input") + .facets( + ol.newDatasetFacetsBuilder() + .version(ol.newDatasetVersionDatasetFacet("input-version")) + .build()) + .inputFacets( + ol.newInputDatasetInputFacetsBuilder() + .dataQualityMetrics( + ol.newDataQualityMetricsInputDatasetFacetBuilder() + .rowCount(10L) + .bytes(20L) + .columnMetrics( + ol.newDataQualityMetricsInputDatasetFacetColumnMetricsBuilder() + .put( + "mycol", + ol.newDataQualityMetricsInputDatasetFacetColumnMetricsAdditionalBuilder() + .count(10D) + .distinctCount(10L) + .max(30D) + .min(5D) + .nullCount(1L) + .sum(3000D) + .quantiles( + ol.newDataQualityMetricsInputDatasetFacetColumnMetricsAdditionalQuantilesBuilder() + .put("25", 52D) + .build()) + .build()) + .build()) + .build()) + .build()) + .build()); + // output dataset + List outputs = + Arrays.asList( + ol.newOutputDatasetBuilder() + .namespace("ons") + .name("output") + .facets( + ol.newDatasetFacetsBuilder() + .version(ol.newDatasetVersionDatasetFacet("output-version")) + .build()) + .outputFacets( + ol.newOutputDatasetOutputFacetsBuilder() + .outputStatistics(ol.newOutputStatisticsOutputDatasetFacet(10L, 20L)) + .build()) + .build()); + + // run state update which encapsulates all - with START event in this case + RunEvent runStateUpdate = + ol.newRunEventBuilder() + .eventType(eventType) + .eventTime(now) + .run(run) + .job(job) + .inputs(inputs) + .outputs(outputs) + .build(); + + return runStateUpdate; + } +} + +``` + +When you use OpenLineage backend such as Marquez on your local environment, the program would emit OpenLienage events to it. + +```bash +java ol.test.OpenLineageClientTest +``` + +However, this short program does not produce any logging information, as the logging configuration is required to be setup. Below are the examples of adding dependencies of the libraries that you need to use `log4j2` as the target implementation for the slf4j, on [maven](https://maven.apache.org/) or [gradle](https://gradle.org/). + +### Maven +pom.xml +```xml + + ... + + org.apache.logging.log4j + log4j-api + 2.7 + + + org.apache.logging.log4j + log4j-core + 2.7 + + + org.apache.logging.log4j + log4j-slf4j-impl + 2.7 + + ... + +``` +### Gradle +build.gradle +``` +dependencies { + ... + implementation "org.apache.logging.log4j:log4j-api:2.7" + implementation "org.apache.logging.log4j:log4j-core:2.7" + implementation "org.apache.logging.log4j:log4j-slf4j-impl:2.7" + ... +} +``` + +You also need to create a log4j configuration file, `log4j2.properties` on the classpath. Here is the sample log configuration. + +``` +# Set to debug or trace if log4j initialization is failing +status = warn + +# Name of the configuration +name = ConsoleLogConfigDemo + +# Console appender configuration +appender.console.type = Console +appender.console.name = consoleLogger +appender.console.layout.type = PatternLayout +appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n + +# Root logger level +rootLogger.level = debug + +# Root logger referring to console appender +rootLogger.appenderRef.stdout.ref = consoleLogger +``` + +Re-compiling and running the `ol.test.OpenLineageClientTest` again will produce the following outputs: + +``` +2022-12-07 08:57:24 INFO OpenLineageClientTest:33 - Running OpenLineage Client Test... +2022-12-07 08:57:25 DEBUG HttpTransport:96 - POST http://localhost:5000/api/v1/lineage: {"eventType":"START","eventTime":"2022-12-07T14:57:25.072781Z","run":{"runId":"0142c998-3416-49e7-92aa-d025c4c93697","facets":{"nominalTime":{"_producer":"producer","_schemaURL":"https://openlineage.io/spec/facets/1-0-0/NominalTimeRunFacet.json#/$defs/NominalTimeRunFacet","nominalStartTime":"2022-12-07T14:57:25.072781Z","nominalEndTime":"2022-12-07T14:57:25.072781Z"}}},"job":{"namespace":"namespace","name":"jobName","facets":{}},"inputs":[{"namespace":"ins","name":"input","facets":{"version":{"_producer":"producer","_schemaURL":"https://openlineage.io/spec/facets/1-0-0/DatasetVersionDatasetFacet.json#/$defs/DatasetVersionDatasetFacet","datasetVersion":"input-version"}},"inputFacets":{"dataQualityMetrics":{"_producer":"producer","_schemaURL":"https://openlineage.io/spec/facets/1-0-0/DataQualityMetricsInputDatasetFacet.json#/$defs/DataQualityMetricsInputDatasetFacet","rowCount":10,"bytes":20,"columnMetrics":{"mycol":{"nullCount":1,"distinctCount":10,"sum":3000.0,"count":10.0,"min":5.0,"max":30.0,"quantiles":{"25":52.0}}}}}}],"outputs":[{"namespace":"ons","name":"output","facets":{"version":{"_producer":"producer","_schemaURL":"https://openlineage.io/spec/facets/1-0-0/DatasetVersionDatasetFacet.json#/$defs/DatasetVersionDatasetFacet","datasetVersion":"output-version"}},"outputFacets":{"outputStatistics":{"_producer":"producer","_schemaURL":"https://openlineage.io/spec/facets/1-0-0/OutputStatisticsOutputDatasetFacet.json#/$defs/OutputStatisticsOutputDatasetFacet","rowCount":10,"size":20}}}],"producer":"producer","schemaURL":"https://openlineage.io/spec/1-0-4/OpenLineage.json#/$defs/RunEvent"} +2022-12-07 08:57:25 DEBUG HttpTransport:96 - POST http://localhost:5000/api/v1/lineage: {"eventType":"COMPLETE","eventTime":"2022-12-07T14:57:25.42041Z","run":{"runId":"0142c998-3416-49e7-92aa-d025c4c93697","facets":{"nominalTime":{"_producer":"producer","_schemaURL":"https://openlineage.io/spec/facets/1-0-0/NominalTimeRunFacet.json#/$defs/NominalTimeRunFacet","nominalStartTime":"2022-12-07T14:57:25.42041Z","nominalEndTime":"2022-12-07T14:57:25.42041Z"}}},"job":{"namespace":"namespace","name":"jobName","facets":{}},"inputs":[{"namespace":"ins","name":"input","facets":{"version":{"_producer":"producer","_schemaURL":"https://openlineage.io/spec/facets/1-0-0/DatasetVersionDatasetFacet.json#/$defs/DatasetVersionDatasetFacet","datasetVersion":"input-version"}},"inputFacets":{"dataQualityMetrics":{"_producer":"producer","_schemaURL":"https://openlineage.io/spec/facets/1-0-0/DataQualityMetricsInputDatasetFacet.json#/$defs/DataQualityMetricsInputDatasetFacet","rowCount":10,"bytes":20,"columnMetrics":{"mycol":{"nullCount":1,"distinctCount":10,"sum":3000.0,"count":10.0,"min":5.0,"max":30.0,"quantiles":{"25":52.0}}}}}}],"outputs":[{"namespace":"ons","name":"output","facets":{"version":{"_producer":"producer","_schemaURL":"https://openlineage.io/spec/facets/1-0-0/DatasetVersionDatasetFacet.json#/$defs/DatasetVersionDatasetFacet","datasetVersion":"output-version"}},"outputFacets":{"outputStatistics":{"_producer":"producer","_schemaURL":"https://openlineage.io/spec/facets/1-0-0/OutputStatisticsOutputDatasetFacet.json#/$defs/OutputStatisticsOutputDatasetFacet","rowCount":10,"size":20}}}],"producer":"producer","schemaURL":"https://openlineage.io/spec/1-0-4/OpenLineage.json#/$defs/RunEvent"} +``` + +Logs will also produce meaningful error messages when something does not work correctly. For example, if the backend server does not exist, you would get the following messages in your console output: + +``` +2022-12-07 09:15:16 INFO OpenLineageClientTest:33 - Running OpenLineage Client Test... +2022-12-07 09:15:16 DEBUG HttpTransport:96 - POST http://localhost:5000/api/v1/lineage: {"eventType":"START","eventTime":"2022-12-07T15:15:16.668979Z","run":{"runId":"69861937-55ba-43f5-ab5e-fe78ef6a283d","facets":{"nominalTime":{"_producer":"producer","_schemaURL":"https://openlineage.io/spec/facets/1-0-0/NominalTimeRunFacet.json#/$defs/NominalTimeRunFacet","nominalStartTime":"2022-12-07T15:15:16.668979Z","nominalEndTime":"2022-12-07T15:15:16.668979Z"}}},"job":{"namespace":"namespace","name":"jobName","facets":{}},"inputs":[{"namespace":"ins","name":"input","facets":{"version":{"_producer":"producer","_schemaURL":"https://openlineage.io/spec/facets/1-0-0/DatasetVersionDatasetFacet.json#/$defs/DatasetVersionDatasetFacet","datasetVersion":"input-version"}},"inputFacets":{"dataQualityMetrics":{"_producer":"producer","_schemaURL":"https://openlineage.io/spec/facets/1-0-0/DataQualityMetricsInputDatasetFacet.json#/$defs/DataQualityMetricsInputDatasetFacet","rowCount":10,"bytes":20,"columnMetrics":{"mycol":{"nullCount":1,"distinctCount":10,"sum":3000.0,"count":10.0,"min":5.0,"max":30.0,"quantiles":{"25":52.0}}}}}}],"outputs":[{"namespace":"ons","name":"output","facets":{"version":{"_producer":"producer","_schemaURL":"https://openlineage.io/spec/facets/1-0-0/DatasetVersionDatasetFacet.json#/$defs/DatasetVersionDatasetFacet","datasetVersion":"output-version"}},"outputFacets":{"outputStatistics":{"_producer":"producer","_schemaURL":"https://openlineage.io/spec/facets/1-0-0/OutputStatisticsOutputDatasetFacet.json#/$defs/OutputStatisticsOutputDatasetFacet","rowCount":10,"size":20}}}],"producer":"producer","schemaURL":"https://openlineage.io/spec/1-0-4/OpenLineage.json#/$defs/RunEvent"} +io.openlineage.client.OpenLineageClientException: org.apache.http.conn.HttpHostConnectException: Connect to localhost:5000 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused + at io.openlineage.client.transports.HttpTransport.emit(HttpTransport.java:113) + at io.openlineage.client.OpenLineageClient.emit(OpenLineageClient.java:42) + at ol.test.OpenLineageClientTest.main(OpenLineageClientTest.java:48) +Caused by: org.apache.http.conn.HttpHostConnectException: Connect to localhost:5000 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused + at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:156) + at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:376) + at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:393) + at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:236) + at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:186) + at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89) + at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:110) + at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185) + at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83) + at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:108) + at io.openlineage.client.transports.HttpTransport.emit(HttpTransport.java:108) + ... 2 more +Caused by: java.net.ConnectException: Connection refused + at java.base/sun.nio.ch.Net.pollConnect(Native Method) + at java.base/sun.nio.ch.Net.pollConnectNow(Net.java:672) + at java.base/sun.nio.ch.NioSocketImpl.timedFinishConnect(NioSocketImpl.java:542) + at java.base/sun.nio.ch.NioSocketImpl.connect(NioSocketImpl.java:585) + at java.base/java.net.SocksSocketImpl.connect(SocksSocketImpl.java:327) + at java.base/java.net.Socket.connect(Socket.java:666) + at org.apache.http.conn.socket.PlainConnectionSocketFactory.connectSocket(PlainConnectionSocketFactory.java:75) + at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142) + ... 12 more +``` + +If you wish to output loggigng message to a file, you can modify the basic configuration by adding a file appender configuration as follows: + +``` +# Set to debug or trace if log4j initialization is failing +status = warn + +# Name of the configuration +name = ConsoleLogConfigDemo + +# Console appender configuration +appender.console.type = Console +appender.console.name = consoleLogger +appender.console.layout.type = PatternLayout +appender.console.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n + +# File appender configuration +appender.file.type = File +appender.file.name = fileLogger +appender.file.fileName = app.log +appender.file.layout.type = PatternLayout +appender.file.layout.pattern = %d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n + +# Root logger level +rootLogger.level = debug + +# Root logger referring to console appender +rootLogger.appenderRef.stdout.ref = consoleLogger +rootLogger.appenderRef.file.ref = fileLogger +``` + +And the logs will be saved to a file `app.log`. +Outputting logs using `log4j2` is just one way of doing it, so below are some additional resources of undersatnding how Java logging works, and other ways to output the logs. + +### Further readings +- https://www.baeldung.com/java-logging-intro +- https://www.baeldung.com/slf4j-with-log4j2-logback#Log4j2 +- https://mkyong.com/logging/log4j2-properties-example/ diff --git a/versioned_docs/version-1.24.1/development/developing/python/_category_.json b/versioned_docs/version-1.24.1/development/developing/python/_category_.json new file mode 100644 index 0000000..e38b23f --- /dev/null +++ b/versioned_docs/version-1.24.1/development/developing/python/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "Python", + "position": 1 +} diff --git a/versioned_docs/version-1.24.1/development/developing/python/api-reference/_category_.json b/versioned_docs/version-1.24.1/development/developing/python/api-reference/_category_.json new file mode 100644 index 0000000..f92b09d --- /dev/null +++ b/versioned_docs/version-1.24.1/development/developing/python/api-reference/_category_.json @@ -0,0 +1,4 @@ +{ + "label": "API Reference", + "position": 10 +} diff --git a/versioned_docs/version-1.24.1/development/developing/python/api-reference/openlineage.client.md b/versioned_docs/version-1.24.1/development/developing/python/api-reference/openlineage.client.md new file mode 100644 index 0000000..48da3ac --- /dev/null +++ b/versioned_docs/version-1.24.1/development/developing/python/api-reference/openlineage.client.md @@ -0,0 +1,8 @@ +--- +title: Python Client +--- + + + +