Controllare e monitorare la condivisione dei dati
Questo articolo descrive come i provider di dati e i destinatari possono usare i log di controllo per monitorare gli eventi di condivisione differenziale. 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 provider.
Per visualizzare l'elenco degli eventi del log di controllo di Condivisione differenziale, vedere Eventi di condivisione differenziale.
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, vedere Informazioni di riferimento sulla tabella di sistema del log di controllo.
Se non si è un amministratore dell'account o un amministratore del metastore, è necessario avere accesso a per system.access.audit
leggere i log di controllo.
Visualizzare gli eventi di condivisione differenziale 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 Condivisione differenziale, vedere Eventi di condivisione differenziale.
Visualizzare i dettagli del risultato della query di un destinatario
Nei log del provider gli eventi restituiti come deltaSharingQueriedTableChanges
e deltaSharingQueriedTable
vengono registrati dopo che la query di un destinatario dati riceve una risposta. 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 è completo.
"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"
Errori registrati
Se un'azione di condivisione differenziale tentata ha esito negativo, l'azione viene registrata con il messaggio di errore nel response.error_message
campo del log. Gli elementi tra <
e >
i caratteri rappresentano il testo segnaposto.
Messaggi di errore nei log del provider
La condivisione differenziale registra gli errori seguenti per i provider 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
La condivisione differenziale registra gli errori seguenti 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.