Inspekcja i monitorowanie udostępniania danych

W tym artykule opisano, jak dostawcy danych i adresaci mogą używać dzienników inspekcji do monitorowania zdarzeń udostępniania różnicowego. Dzienniki inspekcji dostawcy rejestrują akcje podejmowane przez dostawcę i akcje podejmowane przez adresatów na udostępnionych danych dostawcy. Dzienniki inspekcji adresata rejestrują zdarzenia związane z uzyskiwaniem dostępu do udziałów i zarządzaniem obiektami dostawcy.

Aby wyświetlić listę zdarzeń dziennika inspekcji udostępniania różnicowego, zobacz Zdarzenia udostępniania różnicowego.

Wymagania

Aby uzyskać dostęp do dzienników inspekcji, administrator konta musi włączyć tabelę systemu dzienników inspekcji dla konta usługi Azure Databricks. Zobacz Włączanie tabel systemowych. Aby uzyskać informacje na temat tabeli systemu dzienników inspekcji, zobacz Dokumentacja tabeli systemu dzienników inspekcji.

Jeśli nie jesteś administratorem konta lub administratorem magazynu metadanych, musisz mieć dostęp do system.access.audit odczytu dzienników inspekcji.

Wyświetlanie zdarzeń udostępniania różnicowego w dzienniku inspekcji

Jeśli konto ma włączone tabele systemowe, dzienniki inspekcji są przechowywane w programie system.access.audit. Jeśli konto ma konfigurację dostarczania dziennika inspekcji, musisz znać zasobnik i ścieżkę, w której są dostarczane dzienniki.

Zarejestrowane zdarzenia

Aby wyświetlić listę zdarzeń dziennika inspekcji udostępniania różnicowego, zobacz Zdarzenia udostępniania różnicowego.

Wyświetlanie szczegółów wyniku zapytania odbiorcy

W dziennikach dostawcy zdarzenia zwrócone jako deltaSharingQueriedTableChanges i deltaSharingQueriedTable są rejestrowane po wykonaniu zapytania odbiorcy danych otrzyma odpowiedź. Dostawcy mogą wyświetlić response.result pole tych dzienników, aby wyświetlić więcej szczegółów na temat tego, co zostało udostępnione odbiorcy. Pole może zawierać następujące wartości. Lista ta nie jest wyczerpująca.

"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"

Zarejestrowane błędy

Jeśli próba wykonania akcji udostępniania różnicowego zakończy się niepowodzeniem, akcja zostanie zarejestrowana z komunikatem o błędzie w response.error_message polu dziennika. Elementy między znakami < i > reprezentują tekst zastępczy.

Komunikaty o błędach w dziennikach dostawcy

Usługa Delta Sharing rejestruje następujące błędy dla dostawców danych:

  • Udostępnianie różnicowe nie jest włączone w wybranym magazynie metadanych.

    DatabricksServiceException: FEATURE_DISABLED:
    Delta Sharing is not enabled
    
  • Podjęto próbę wykonania operacji w wykazie, który nie istnieje.

    DatabricksServiceException: CATALOG_DOES_NOT_EXIST:
    Catalog ‘<catalog>’ does not exist.
    
  • Użytkownik, który nie jest administratorem konta lub administratorem magazynu metadanych, próbował wykonać operację uprzywilejowaną.

    DatabricksServiceException: PERMISSION_DENIED:
    Only administrators can <operation-name> <operation-target>
    
  • Podjęto próbę wykonania operacji w magazynie metadanych z obszaru roboczego, do którego nie przypisano magazynu metadanych.

    DatabricksServiceException: INVALID_STATE:
    Workspace <workspace-name> is no longer assigned to this metastore
    
  • W żądaniu brakuje nazwy adresata lub nazwy udziału.

    DatabricksServiceException: INVALID_PARAMETER_VALUE: CreateRecipient/CreateShare Missing required field: <recipient-name>/<share-name>
    
  • Żądanie zawierało nieprawidłową nazwę adresata lub nazwę udziału.

    DatabricksServiceException: INVALID_PARAMETER_VALUE: CreateRecipient/CreateShare <recipient-name>/<share-name> is not a valid name
    
  • Użytkownik próbował udostępnić tabelę, która nie znajduje się w magazynie metadanych wykazu aparatu Unity.

    DatabricksServiceException: INVALID_PARAMETER_VALUE: Only managed or external table on Unity Catalog can be added to a share
    
  • Użytkownik próbował obrócić adresata, który był już w stanie rotacji i którego poprzedni token jeszcze nie wygasł.

    DatabricksServiceException: INVALID_PARAMETER_VALUE: There are already two active tokens for recipient <recipient-name>
    
  • Użytkownik próbował utworzyć nowego adresata lub udostępnić go pod tą samą nazwą co istniejący.

    DatabricksServiceException: RECIPIENT_ALREADY_EXISTS/SHARE_ALREADY_EXISTS: Recipient/Share <name> already exists`
    
  • Użytkownik próbował wykonać operację dla adresata lub udziału, który nie istnieje.

    DatabricksServiceException: RECIPIENT_DOES_NOT_EXIST/SHARE_DOES_NOT_EXIST: Recipient/Share '<name>' does not exist
    
  • Użytkownik próbował dodać tabelę do udziału, ale tabela została już dodana.

    DatabricksServiceException: RESOURCE_ALREADY_EXISTS: Shared Table '<name>' already exists
    
  • Użytkownik próbował wykonać operację, która odwołuje się do tabeli, która nie istnieje.

    DatabricksServiceException: TABLE_DOES_NOT_EXIST: Table '<name>' does not exist
    
  • Użytkownik próbował wykonać operację, która odwołuje się do schematu, który nie istnieje.

    DatabricksServiceException: SCHEMA_DOES_NOT_EXIST: Schema '<name>' does not exist
    
  • Użytkownik próbował uzyskać dostęp do udziału, który nie istnieje.

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

Komunikaty o błędach w dziennikach adresatów

Funkcja Delta Sharing rejestruje następujące błędy dla adresatów danych:

  • Użytkownik próbował uzyskać dostęp do udziału, do którego nie ma uprawnień dostępu.

    DatabricksServiceException: PERMISSION_DENIED:
    User does not have SELECT on Share <share-name>
    
  • Użytkownik próbował uzyskać dostęp do udziału, który nie istnieje.

    DatabricksServiceException: SHARE_DOES_NOT_EXIST: Share <share-name> does not exist.
    
  • Użytkownik próbował uzyskać dostęp do tabeli, która nie istnieje w udziale.

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