Veri paylaşımını denetleme ve izleme
Bu makalede veri sağlayıcılarının ve alıcıların Delta Sharing olaylarını izlemek için denetim günlüklerini nasıl kullanabileceği açıklanmaktadır. Sağlayıcı denetim günlükleri, sağlayıcı tarafından yapılan eylemleri ve sağlayıcının paylaşılan verilerinde alıcılar tarafından yapılan eylemleri kaydeder. Alıcı denetim günlükleri, paylaşımlara erişme ve sağlayıcı nesnelerinin yönetimiyle ilgili olayları kaydeder.
Delta Sharing denetim günlüğü olaylarının listesini görüntülemek için bkz . Delta Sharing olayları.
Gereksinimler
Denetim günlüklerine erişmek için hesap yöneticisinin Azure Databricks hesabınız için denetim günlüğü sistem tablosunu etkinleştirmesi gerekir. Bkz. Sistem tablolarını etkinleştirme. Denetim günlüğü sistemi tablosu hakkında bilgi için Denetim günlüğü sistemi tablo referansı'na bakınız.
Hesap yöneticisi veya meta veri deposu yöneticisi değilseniz denetim günlüklerini okuma erişimine sahip system.access.audit
olmanız gerekir.
Delta Sharing olaylarını denetim günlüğünde görüntüleme
Hesabınızda sistem tabloları etkinleştirilmişse denetim günlükleri içinde system.access.audit
depolanır. Alternatif olarak, hesabınızda bir denetim günlüğü iletim kurulumu varsa, günlüklerin iletildiği depo ve dosya yolunu bilmeniz gerekir.
Günlüğe kaydedilen olaylar
Delta Sharing denetim günlüğü olaylarının listesini görüntülemek için bkz . Delta Sharing olayları.
Alıcının sorgu sonucunun ayrıntılarını görüntüleme
Delta Sharing; tablolar, görünümler, materyalize edilmiş görünümler, akış tabloları ve birimler gibi varlık türlerini paylaşmayı destekler. Delta Sharing, önceden imzalanmış URL'lerden veya kapsamı daraltılmış STS belirteçlerinden alınan verilere geçici okuma erişimi sağlar. Aşağıdaki tabloda, paylaşım türünün günlüğe kaydedilen denetim günlüğü olaylarına nasıl karşılık olduğu özetlenmiştir:
Senaryo | Denetim günlüğü olayları |
---|---|
Açık alıcılarla paylaşılan tablolar ve Databricks alıcılarıyla paylaşılan geçmişi olmayan tablolar |
|
Databricks alıcılarıyla paylaşılan geçmişe sahip tablo |
|
Hacim paylaşımı (STS belirteci tabanlı erişim) |
|
Önceden imzalanan URL paylaşımlarıyla ilgili ayrıntıları görüntüleme
Sağlayıcı günlüklerinde, veri alıcısının sorgusu önceden imzalı URL tabanlı paylaşım için yanıt aldıktan sonra deltaSharingQueriedTableChanges
ve deltaSharingQueriedTable
olayları günlüğe kaydedilir. Sağlayıcılar, alıcıyla nelerin paylaşıldığı hakkında daha fazla ayrıntı görmek için bu günlüklerin alanını görüntüleyebilir response.result
. alanı aşağıdaki değerleri içerebilir. Bu liste kapsamlı değil.
"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"
STS jetonu paylaşımları hakkında ayrıntıları görüntüle
Sağlayıcı günlüklerinde, bir veri alıcısının sorgusu STS belirteci tabanlı paylaşım için yanıt aldıktan sonra generateTemporaryTableCredentials
ve generateTemporaryVolumeCredentials
olaylar günlüğe kaydedilir. Sağlayıcılar, alıcıyla paylaşılanlar hakkında daha fazla ayrıntı görmek için bu günlüklerin request_params
sütununu görüntüleyebilir. alanı aşağıdaki değerleri içerebilir. Bu liste kapsamlı değil.
"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"
Günlüğe kaydedilen hatalar
Delta Sharing eylemi başarısız olursa, bu eylem hata iletisiyle response.error_message
alanında günlüğe kaydedilir. ve <
karakterleri arasındaki >
öğeler yer tutucu metni temsil eden öğelerdir.
Sağlayıcı günlüklerinde hata iletileri
Veri sağlayıcıları için Delta Sharing, aşağıdaki hataları kaydeder:
Delta Paylaşımı seçili meta veri deposunda etkin değil.
DatabricksServiceException: FEATURE_DISABLED: Delta Sharing is not enabled
Var olmayan bir katalogda bir işlem denendi.
DatabricksServiceException: CATALOG_DOES_NOT_EXIST: Catalog ‘<catalog>’ does not exist.
Hesap yöneticisi veya meta veri deposu yöneticisi olmayan bir kullanıcı ayrıcalıklı bir işlem gerçekleştirmeye çalıştı.
DatabricksServiceException: PERMISSION_DENIED: Only administrators can <operation-name> <operation-target>
Meta veri deposunun atanmadığı bir çalışma alanından meta veri deposunda bir işlem denendi.
DatabricksServiceException: INVALID_STATE: Workspace <workspace-name> is no longer assigned to this metastore
Bir istekte alıcı adı veya paylaşım adı eksikti.
DatabricksServiceException: INVALID_PARAMETER_VALUE: CreateRecipient/CreateShare Missing required field: <recipient-name>/<share-name>
İstekte geçersiz bir alıcı adı veya paylaşım adı vardı.
DatabricksServiceException: INVALID_PARAMETER_VALUE: CreateRecipient/CreateShare <recipient-name>/<share-name> is not a valid name
Bir kullanıcı Unity Kataloğu meta veri deposunda olmayan bir tabloyu paylaşmaya çalıştı.
DatabricksServiceException: INVALID_PARAMETER_VALUE: Only managed or external table on Unity Catalog can be added to a share
Kullanıcı zaten döndürülmüş durumda olan ve önceki belirtecinin süresi henüz dolmamış bir alıcıyı döndürmeye çalıştı.
DatabricksServiceException: INVALID_PARAMETER_VALUE: There are already two active tokens for recipient <recipient-name>
Kullanıcı yeni bir alıcı oluşturmaya veya mevcut alıcıyla aynı ada sahip bir paylaşım oluşturmaya çalıştı.
DatabricksServiceException: RECIPIENT_ALREADY_EXISTS/SHARE_ALREADY_EXISTS: Recipient/Share <name> already exists`
Kullanıcı, var olmayan bir alıcı veya paylaşım üzerinde işlem yapmaya çalıştı.
DatabricksServiceException: RECIPIENT_DOES_NOT_EXIST/SHARE_DOES_NOT_EXIST: Recipient/Share '<name>' does not exist
Kullanıcı bir paylaşıma tablo eklemeyi denedi ancak tablo daha önce eklenmişti.
DatabricksServiceException: RESOURCE_ALREADY_EXISTS: Shared Table '<name>' already exists
Kullanıcı, var olmayan bir tabloya başvuran bir işlem gerçekleştirmeye çalıştı.
DatabricksServiceException: TABLE_DOES_NOT_EXIST: Table '<name>' does not exist
Kullanıcı, var olmayan bir şemaya başvuran bir işlem gerçekleştirmeye çalıştı.
DatabricksServiceException: SCHEMA_DOES_NOT_EXIST: Schema '<name>' does not exist
Kullanıcı var olmayan bir paylaşıma erişmeye çalıştı.
DatabricksServiceException: SHARE_DOES_NOT_EXIST: Share <share-name> does not exist.
Alıcı günlüklerinde hata iletileri
Delta Sharing, veri alıcıları için aşağıdaki hataları günlüğe kaydeder:
Kullanıcı erişim izni olmayan bir paylaşıma erişmeye çalıştı.
DatabricksServiceException: PERMISSION_DENIED: User does not have SELECT on Share <share-name>
Kullanıcı var olmayan bir paylaşıma erişmeye çalıştı.
DatabricksServiceException: SHARE_DOES_NOT_EXIST: Share <share-name> does not exist.
Kullanıcı paylaşımda var olmayan bir tabloya erişmeye çalıştı.
DatabricksServiceException: TABLE_DOES_NOT_EXIST: <table-name> does not exist.