Data Lineage API יכול לקבל מידע על שרשרת המקורות ממערכות שמשולבות עם OpenLineage, תקן פתוח לאיסוף שרשרת מקורות.
כששולחים אירועים בפורמט OpenLineage אל Data Lineage API באמצעות השיטה ProcessOpenLineageRunEvent, Data Lineage API ממפה מאפיינים מההודעה בפורמט OpenLineage למאפיינים תואמים ב-Data Lineage API.
במאמר הזה מופיעות טבלאות הפניה למיפויים האלה.
מיפוי מאפיינים
ה-method של ProcessOpenLineageRunEvent API בארכיטקטורת REST ממפה מאפייני OpenLineage למאפייני Data Lineage API באופן הבא:
| מאפייני API של מעקב אחר מקורות נתונים | מאפייני OpenLineage |
|---|---|
| Process.name | projects/PROJECT_NUMBER/locations/LOCATION/processes/HASH_OF_NAMESPACE_AND_NAME |
| Process.displayName | Job.namespace + ":" + Job.name |
| Process.attributes | Job.facets (ראו נתונים מאוחסנים) |
| Run.name | projects/PROJECT_NUMBER/locations/LOCATION/processes/HASH_OF_NAMESPACE_AND_NAME/runs/HASH_OF_RUNID |
| Run.displayName | Run.runId |
| Run.attributes | Run.facets (ראו נתונים מאוחסנים) |
| Run.startTime | eventTime |
| Run.endTime | eventTime |
| Run.state | eventType |
| LineageEvent.name | projects/PROJECT_NUMBER/locations/LOCATION/processes/HASH_OF_NAMESPACE_AND_NAME/runs/HASH_OF_RUNID/lineageEvents/HASH_OF_JOB_RUN_INPUT_OUTPUTS_OF_EVENT (לדוגמה, projects/11111111/locations/us/processes/1234/runs/4321/lineageEvents/111-222-333) |
| LineageEvent.EventLinks.source | קלט (fqn הוא שרשור של מרחב השמות והשם) |
| LineageEvent.EventLinks.target | פלט (fqn הוא שרשור של מרחב השמות והשם) |
| LineageEvent.startTime | eventTime |
| LineageEvent.endTime | eventTime |
| requestId | מוגדר על ידי שיטת המשתמש |
יש גם תמיכה בשושלת נתונים ברמת העמודה שנוצר על ידי Managed Service for Apache Spark, בתנאי שהוא משתמש במאפיין columnLineage באובייקטים outputs. דוגמה:
"outputs": [ {
"namespace": "bigquery",
"name": "project.dataset.outputtable",
"columnLineage": {
"_producer": "https://github.com/OpenLineage/OpenLineage/tree/1.39.0/integration/spark",
"_schemaURL": "https://openlineage.io/spec/facets/1-2-0/ColumnLineageDatasetFacet.json#/$defs/ColumnLineageDatasetFacet",
"fields": {
"output_field": { // This is the name of the output field
"inputFields": [
{
"namespace": "bigquery",
"name": "project.dataset.inputtable",
"field": "input_field", // This is the name of the input field
"transformations": [
{
"type": "DIRECT",
"subtype": "IDENTITY",
"description": "",
"masking": false
}
]
}
]
}
},
}
}]
בדוגמה הזו, יוצרים קישור של שושלת נתונים ברמת העמודה בין input_field לבין output_field. חובה לכלול את שדה הטרנספורמציות. בלעדיו, לא תתבצע הטמעה של שושלת נתונים ברמת העמודה. מידע נוסף על ההגדרה של Open Lineage עבור ההיבט הזה זמין במאמר בנושא היבט של קבוצת נתונים ברמת העמודה.
מיפוי FQN
בטבלה הבאה מופיעות דוגמאות לזוגות של שם ומרחב שמות של OpenLineage למערכות שונות, והשמות המלאים (FQN) המקבילים שלהם ב-Knowledge Catalog (לשעבר Dataplex Universal Catalog):
| מערכת | מרחב השמות של OpenLineage | שם OpenLineage | השם המלא של Knowledge Catalog |
|---|---|---|---|
| Athena | awsathena://athena.{region_name}.amazonaws.com |
|
|
| AWS Glue | arn:aws:glue:{region}:{account id} |
table/{database name}/{table name} |
aws_glue:table:{region}.{account id}.{database name}.{table name} |
| Azure Cosmos DB | azurecosmos://{host}/dbs/{database} |
colls/{table} |
|
| Azure Data Explorer | azurekusto://{host}.kusto.windows.net |
{database}/{table} |
|
| Azure Synapse | sqlserver://{host}:{port} |
|
לא נתמך |
| BigQuery | bigquery |
|
|
| Cassandra | cassandra://{host}:{port} |
|
|
| MySQL | mysql://{host}:{port} |
|
|
| CrateDB | crate://{host}:{port} |
{database}.{schema}.{table} |
לא נתמך |
| DB2 | db2://{host}:{port} |
|
|
| Hive | hive://{host}:{port} |
{database}.{table} |
לא נתמך |
| MSSQL | mssql://{host}:{port} |
{database}.{schema}.{table} |
לא נתמך |
| OceanBase | oceanbase://{host}:{port} |
{database}.{table} |
לא נתמך |
| Oracle | oracle://{host}:{port} |
{serviceName}.{schema}.{table} or {sid}.{schema}.{table} |
|
| Postgres | postgres://{host}:{port} |
|
|
| Teradata | teradata://{host}:{port} |
{database}.{table} |
לא נתמך |
| Redshift | redshift://{cluster_identifier}.{region_name}:{port} |
|
|
| Snowflake | snowflake://{organization name}-{account name} or snowflake://{account-locator}(.{compliance})(.{cloud_region_id})(.{cloud}) |
|
|
| Spanner | spanner://{projectId}:{instanceId} |
{database}.{schema}.{table} |
נתמך בקטלוג הידע, אבל לא נתמך בתיעוד מקורות הנתונים |
| Trino | trino://{host}:{port} |
|
|
| ABFSS (Azure Data Lake Gen2) | abfss://{container name}@{service name}.dfs.core.windows.net |
{path} |
|
| DBFS (Databricks File System) | dbfs://{workspace name} |
{path} |
|
| Cloud Storage | gs://{bucket name} |
{object key} |
|
| HDFS | hdfs://{namenode host}:{namenode port} |
{path} |
|
| Kafka | kafka://{bootstrap server host}:{port} |
{topic} |
kafka:{serverHostWithPort}.{topicId} |
| מערכת הקבצים המקומית | file |
{path} |
filesystem:localhost.{path} |
| מערכת קבצים מרחוק | file://{host} |
{path} |
filesystem:{hostWithPort}.{path} |
| S3 | s3://{bucket name} |
{object key} |
ו- s3a של מרחב השמות מתקבלות ומומרות ל-s3ns3 |
| WASBS (Azure Blob Storage) | wasbs://{container name}@{service name}.dfs.core.windows.net |
{object key} |
|
| נושא Pub/Sub | pubsub |
topic:{projectId}:{topicId} |
pubsub:topic:{projectId}.{topicId} |
| מינוי ל-Pub/Sub | pubsub |
subscription:{projectId}:{subscriptionId} |
pubsub:subscription:{projectId}.{subscriptionId} |
פורמטים נוספים שמתקבלים
למרות ש-OpenLineage לא מגדיר זוגות namespace/name רגילים למערכות הבאות, Data Lineage API מקבל אירועי שושלת עבורן כשהם מעוצבים כמו שמתואר בטבלה הבאה. משאבים שמפנים אליהם בהודעות OpenLineage עם מרחב השמות custom מפורשים כשמות מותאמים אישית שמוגדרים במלואם.
| מערכת | מרחב השמות של OpenLineage | שם OpenLineage | השם המלא של Knowledge Catalog |
|---|---|---|---|
| שם FQN מותאם אישית | custom |
{some reference} |
custom:{someReference} |
| Dataproc Metastore | dataproc_metastore |
|
|
המאמרים הבאים
- איך משלבים עם OpenLineage
- לפרטים נוספים, אפשר לעיין בחומר העזר בנושא שמות שמוגדרים במלואם.
- מידע נוסף על Data Lineage API
- איך צופים בפרטי שרשרת היוחסין