Überprüfen und Überwachen der Datenfreigabe

In diesem Artikel wird beschrieben, wie Datenanbieter und Empfänger Überwachungsprotokolle verwenden können, um Delta Sharing-Ereignisse zu überwachen. Die Anbieterüberwachungsprotokolle zeichnen vom Anbieter ausgeführte Aktionen sowie Aktionen auf, die von Empfängern für die freigegebenen Daten des Anbieters ausgeführt werden. Empfängerüberwachungsprotokolle erfassen Ereignisse im Zusammenhang mit dem Zugriff auf Freigaben und der Verwaltung von Anbieterobjekten.

Informationen zum Anzeigen der Liste der Delta Sharing-Überwachungsprotokollereignisse finden Sie unter Delta Sharing-Ereignisse.

Anforderungen

Um auf Überwachungsprotokolle zuzugreifen, muss ein Kontoadministrator die Überwachungsprotokollsystemtabelle für Ihr Azure Databricks-Konto aktivieren. Weitere Informationen finden Sie unter Aktivieren von Systemtabellen. Informationen zur Systemtabelle für Überwachungsprotokolle finden Sie unter Referenz zur Systemtabelle für Überwachungsprotokolle.

Wenn Sie kein Kontoadministrator oder Metastoreadministrator sind, müssen Sie Zugriff auf system.access.audit erhalten, um Überwachungsprotokolle zu lesen.

Anzeigen von Delta Sharing-Ereignissen im Überwachungsprotokoll

Wenn in Ihrem Konto Systemtabellen aktiviert sind, werden Überwachungsprotokolle in system.access.audit gespeichert. Wenn Ihr Konto alternativ über eine Einrichtung zur Bereitstellung von Überwachungsprotokollen verfügt, müssen Sie den Bucket und den Pfad kennen, in den die Protokolle geliefert werden.

Protokollierte Ereignisse

Informationen zum Anzeigen der Liste der Delta Sharing-Überwachungsprotokollereignisse finden Sie unter Delta Sharing-Ereignisse.

Anzeigen von Details des Abfrageergebnisses eines Empfängers

In den Anbieterprotokollen werden die als deltaSharingQueriedTableChanges und deltaSharingQueriedTable zurückgegebenen Ereignisse protokolliert, nachdem die Abfrage eines Datenempfängers eine Antwort erhält. Anbieter können das response.result-Feld dieser Protokolle anzeigen, um weitere Details dazu anzuzeigen, was für den Empfänger freigegeben wurde. Das Feld kann die folgenden Werte enthalten. Diese Liste ist nicht vollständig.

"checkpointBytes": "0",
"earlyTermination": "false",
"maxRemoveFiles": "0",
"path": "file: example/s3/path/golden/snapshot-data0/_delta_log",
"deltaSharingPartitionFilteringAccessed": "false",
"deltaSharingRecipientId": "<redacted>",
"deltaSharingRecipientIdHash": "<recipient-hash-id>",
"jsonLogFileNum": "1",
"scannedJsonLogActionNum": "5",
"numRecords": "3",
"deltaSharingRecipientMetastoreId": "<redacted>",
"userAgent": "Delta-Sharing-Unity-Catalog-Databricks-Auth/1.0 Linux/4.15.0-2068-azure-fips OpenJDK_64-Bit_Server_VM/11.0.7+10-jvmci-20.1-b02 java/11.0.7 scala/2.12.15 java_vendor/GraalVM_Community",
"jsonLogFileBytes": "2846",
"checkpointFileNum": "0",
"metastoreId": "<redacted>",
"limitHint": "Some(1)",
"tableName": "cookie_ingredients",
"tableId": "1234567c-6d8b-45fd-9565-32e9fc23f8f3",
"activeAddFiles": "2", // number of AddFiles returned in the query
"numAddFiles": "2", // number of AddFiles returned in the query
"numAddCDCFiles": "2", // number of AddFiles returned in the CDF query
"numRemoveFiles": "2", // number of RemoveFiles returned in the query
"numSeenAddFiles": "3",
"scannedAddFileSize": "1300", // file size in bytes for the AddFile returned in the query
"scannedAddCDCFileSize": "1300", // file size in bytes for the AddCDCFile returned in the CDF query
"scannedRemoveFileSize": "1300", // file size in bytes for the RemoveFile returned in the query
"scannedCheckpointActionNum": "0",
"tableVersion": "0"

Protokollierte Fehler

Wenn eine versuchte Delta Sharing-Aktion fehlschlägt, wird die Aktion mit der Fehlermeldung im response.error_message-Feld des Protokolls protokolliert. Elemente zwischen den Zeichen < und > stellen einen Platzhaltertext dar.

Fehlermeldungen in Anbieterprotokollen

Delta Sharing protokolliert die folgenden Fehler für Datenanbieter:

  • Delta Sharing ist nicht für den ausgewählten Metastore aktiviert.

    DatabricksServiceException: FEATURE_DISABLED:
    Delta Sharing is not enabled
    
  • Es wurde versucht, einen Vorgang für einen nicht vorhandenen Katalog auszuführen.

    DatabricksServiceException: CATALOG_DOES_NOT_EXIST:
    Catalog ‘<catalog>’ does not exist.
    
  • Benutzer*innen, die keine Kontoadministrator*innen oder Metastoreadministrator*innen sind, haben versucht, einen privilegierten Vorgang auszuführen.

    DatabricksServiceException: PERMISSION_DENIED:
    Only administrators can <operation-name> <operation-target>
    
  • Es wurde versucht, über einen dem Metastore nicht zugewiesenen Arbeitsbereich einen Vorgang für den Metastore auszuführen.

    DatabricksServiceException: INVALID_STATE:
    Workspace <workspace-name> is no longer assigned to this metastore
    
  • In einer Anforderung fehlte der Empfänger- oder Freigabename.

    DatabricksServiceException: INVALID_PARAMETER_VALUE: CreateRecipient/CreateShare Missing required field: <recipient-name>/<share-name>
    
  • Eine Anforderung enthielt einen ungültigen Empfänger- oder Freigabenamen.

    DatabricksServiceException: INVALID_PARAMETER_VALUE: CreateRecipient/CreateShare <recipient-name>/<share-name> is not a valid name
    
  • Ein*e Benutzer*in hat versucht, eine Tabelle freizugeben, die sich nicht in einem Unity Catalog-Metastore befindet.

    DatabricksServiceException: INVALID_PARAMETER_VALUE: Only managed or external table on Unity Catalog can be added to a share
    
  • Ein*e Benutzer*in hat versucht, einen Empfänger zu rotieren, der sich bereits in einem rotierten Zustand befand und dessen vorheriges Token noch nicht abgelaufen war.

    DatabricksServiceException: INVALID_PARAMETER_VALUE: There are already two active tokens for recipient <recipient-name>
    
  • Ein*e Benutzer*in hat versucht, einen neuen Empfänger oder eine neue Freigabe mit dem gleichen Namen eines bereits vorhandenen Empfängers oder einer bereits vorhandenen Freigabe zu erstellen.

    DatabricksServiceException: RECIPIENT_ALREADY_EXISTS/SHARE_ALREADY_EXISTS: Recipient/Share <name> already exists`
    
  • Ein*e Benutzer*in hat versucht, einen Vorgang für einen Empfänger oder eine Freigabe auszuführen, der bzw. die nicht vorhanden ist.

    DatabricksServiceException: RECIPIENT_DOES_NOT_EXIST/SHARE_DOES_NOT_EXIST: Recipient/Share '<name>' does not exist
    
  • Ein*e Benutzer*in hat versucht, einer Freigabe eine Tabelle hinzuzufügen, aber die Tabelle wurde bereits hinzugefügt.

    DatabricksServiceException: RESOURCE_ALREADY_EXISTS: Shared Table '<name>' already exists
    
  • Ein*e Benutzer*in hat versucht, einen Vorgang auszuführen, der auf eine nicht vorhandene Tabelle verweist.

    DatabricksServiceException: TABLE_DOES_NOT_EXIST: Table '<name>' does not exist
    
  • Ein*e Benutzer*in hat versucht, einen Vorgang auszuführen, der auf ein nicht vorhandenes Schema verweist.

    DatabricksServiceException: SCHEMA_DOES_NOT_EXIST: Schema '<name>' does not exist
    
  • Benutzer haben versucht, auf eine Freigabe zuzugreifen, die nicht vorhanden ist.

    DatabricksServiceException: SHARE_DOES_NOT_EXIST: Share <share-name> does not exist.
    

Fehlermeldungen in Empfängerprotokollen

Delta Sharing protokolliert die folgenden Fehler für Datenempfänger:

  • Ein*e Benutzer*in hat versucht, auf eine Freigabe zu zugreifen, für die er oder sie keine Zugriffsberechtigung hat.

    DatabricksServiceException: PERMISSION_DENIED:
    User does not have SELECT on Share <share-name>
    
  • Ein*e Benutzer*in hat versucht, auf eine Freigabe zu zugreifen, die nicht vorhanden ist.

    DatabricksServiceException: SHARE_DOES_NOT_EXIST: Share <share-name> does not exist.
    
  • Ein*e Benutzer*in hat versucht, auf eine Tabelle zu zugreifen, die in der Freigabe nicht vorhanden ist.

    DatabricksServiceException: TABLE_DOES_NOT_EXIST: <table-name> does not exist.