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 |
|
Tabella con cronologia condivisa con i destinatari di Databricks |
|
Condivisione dei volumi (accesso basato su token STS) |
|
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.