Condividi tramite


Controllare e monitorare la condivisione dei dati

Questo articolo descrive come i provider di dati e i destinatari possano utilizzare i log di controllo per monitorare gli eventi di Delta Sharing. I log di controllo del provider registrano le azioni eseguite dal provider e dalle azioni eseguite dai destinatari sui dati condivisi del provider. I log di controllo dei destinatari registrano gli eventi relativi all'accesso alle condivisioni e alla gestione degli oggetti del fornitore.

Per visualizzare l'elenco degli eventi del log di controllo di Delta Sharing, vedere Eventi di Delta Sharing.

Requisiti

Per accedere ai log di controllo, un amministratore dell'account deve abilitare la tabella di sistema del log di controllo per l'account Azure Databricks. Vedere Abilitare le tabelle di sistema. Per informazioni sulla tabella di sistema del log di controllo, consultare Riferimento alla tabella del sistema del log di controllo.

Se non si è un amministratore dell'account o un amministratore del metastore, è necessario avere accesso a system.access.audit per leggere i log di controllo.

Visualizzare gli eventi di Delta Sharing nel log di controllo

Se l'account dispone di tabelle di sistema abilitate, i log di controllo vengono archiviati in system.access.audit. Se, in alternativa, l'account dispone di una configurazione per il recapito del log di controllo, è necessario conoscere il bucket e il percorso in cui vengono recapitati i log.

Eventi registrati

Per visualizzare l'elenco degli eventi del log di controllo di Delta Sharing, vedere Eventi di Delta Sharing.

Visualizzare i dettagli del risultato della query di un destinatario

Delta Sharing supporta la condivisione di tipi di asset, ad esempio tabelle, viste, viste materializzate, tabelle di streaming e volumi. Delta Sharing fornisce l'accesso in lettura temporaneo ai dati sottostanti tramite URL pre-firmati o token STS a portata limitata. Nella tabella seguente viene descritto il modo in cui il tipo di condivisione corrisponde agli eventi del log di controllo registrati:

Scenario Eventi del log di controllo
Tabelle condivise con destinatari aperti e tabelle senza cronologia condivisa con i destinatari di Databricks
  • deltaSharingQueriedTable (per le query di tabella)
  • deltaSharingQueriedTableChanges (per le query CDF)
Tabella con cronologia condivisa con i destinatari di Databricks
  • generateTemporaryTableCredential
Condivisione dei volumi (accesso basato su token STS)
  • generateTemporaryVolumeCredential

Visualizza i dettagli sulle condivisioni degli URL prefirmati

Nei log del provider gli eventi deltaSharingQueriedTableChanges e deltaSharingQueriedTable vengono registrati dopo che la query di un destinatario dati ottiene una risposta per la condivisione basata su URL prefirmato. I provider possono visualizzare il response.result campo di questi log per visualizzare altri dettagli sugli elementi condivisi con il destinatario. Il campo può includere i valori seguenti. Questo elenco non è esaustivo.

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

Visualizza i dettagli sulle condivisioni di token STS

Nei log del provider gli eventi generateTemporaryTableCredentials e generateTemporaryVolumeCredentials vengono registrati dopo che la query di un destinatario dati ottiene una risposta per la condivisione basata su token STS. I provider possono visualizzare la colonna request_params di questi log per visualizzare altri dettagli sugli elementi condivisi con il destinatario. Il campo può includere i valori seguenti. Questo elenco non è esaustivo.

"recipient_name": "someRecipientName"
"share_id": "ea7a4555-43d9-4cbd-a5df-f4f5193f297e"
"credential_type": "StorageCredential"
"is_permissions_enforcing_client": "true"
"table_full_name": "someTableName"
"operation": "READ"
"share_name": "someShareName"
"table_id": "someTableId"
"share_owner": "someShareOwner"
"recipient_id": "someRecipientId"
"table_url": "s3://somePath"
"metastore_id": "someMetastoreId"

Errori registrati

Se un'azione di Delta Sharing tentata ha esito negativo, l'azione viene registrata con il messaggio di errore nel campo response.error_message del log. Gli elementi tra < e > i caratteri rappresentano il testo segnaposto.

Messaggi di errore nei log del provider

Delta Sharing registra i seguenti errori per i fornitori di dati:

  • Delta Sharing non è abilitato nel metastore selezionato.

    DatabricksServiceException: FEATURE_DISABLED:
    Delta Sharing is not enabled
    
  • È stata tentata un'operazione su un catalogo che non esiste.

    DatabricksServiceException: CATALOG_DOES_NOT_EXIST:
    Catalog ‘<catalog>’ does not exist.
    
  • Un utente che non è un amministratore dell'account o un amministratore del metastore ha tentato di eseguire un'operazione con privilegi.

    DatabricksServiceException: PERMISSION_DENIED:
    Only administrators can <operation-name> <operation-target>
    
  • È stata tentata un'operazione in un metastore da un'area di lavoro a cui il metastore non è assegnato.

    DatabricksServiceException: INVALID_STATE:
    Workspace <workspace-name> is no longer assigned to this metastore
    
  • A una richiesta mancava il nome del destinatario o il nome della condivisione.

    DatabricksServiceException: INVALID_PARAMETER_VALUE: CreateRecipient/CreateShare Missing required field: <recipient-name>/<share-name>
    
  • Una richiesta includeva un nome di destinatario o un nome condivisione non valido.

    DatabricksServiceException: INVALID_PARAMETER_VALUE: CreateRecipient/CreateShare <recipient-name>/<share-name> is not a valid name
    
  • Un utente ha tentato di condividere una tabella che non si trova in un metastore di Unity Catalog.

    DatabricksServiceException: INVALID_PARAMETER_VALUE: Only managed or external table on Unity Catalog can be added to a share
    
  • Un utente ha tentato di ruotare un destinatario già in uno stato ruotato e il cui token precedente non era ancora scaduto.

    DatabricksServiceException: INVALID_PARAMETER_VALUE: There are already two active tokens for recipient <recipient-name>
    
  • Un utente ha tentato di creare un nuovo destinatario o una nuova condivisione con lo stesso nome di uno/a esistente.

    DatabricksServiceException: RECIPIENT_ALREADY_EXISTS/SHARE_ALREADY_EXISTS: Recipient/Share <name> already exists`
    
  • Un utente ha tentato di eseguire un'operazione su un destinatario o una condivisione che non esiste.

    DatabricksServiceException: RECIPIENT_DOES_NOT_EXIST/SHARE_DOES_NOT_EXIST: Recipient/Share '<name>' does not exist
    
  • Un utente ha tentato di aggiungere una tabella a una condivisione, ma la tabella era già stata aggiunta.

    DatabricksServiceException: RESOURCE_ALREADY_EXISTS: Shared Table '<name>' already exists
    
  • Un utente ha tentato di eseguire un'operazione che ha fatto riferimento a una tabella che non esiste.

    DatabricksServiceException: TABLE_DOES_NOT_EXIST: Table '<name>' does not exist
    
  • Un utente ha tentato di eseguire un'operazione che ha fatto riferimento a uno schema che non esisteva.

    DatabricksServiceException: SCHEMA_DOES_NOT_EXIST: Schema '<name>' does not exist
    
  • Un utente ha tentato di accedere a una condivisione che non esiste.

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

Messaggi di errore nei log dei destinatari

Delta Sharing registra i seguenti errori per i destinatari dei dati:

  • L'utente ha tentato di accedere a una condivisione di cui non dispone dell'autorizzazione per accedere.

    DatabricksServiceException: PERMISSION_DENIED:
    User does not have SELECT on Share <share-name>
    
  • L'utente ha tentato di accedere a una condivisione che non esiste.

    DatabricksServiceException: SHARE_DOES_NOT_EXIST: Share <share-name> does not exist.
    
  • L'utente ha tentato di accedere a una tabella che non esiste nella condivisione.

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