데이터 공유 감사 및 모니터링
이 문서에서는 데이터 공급자와 받는 사람이 감사 로그를 사용하여 델타 공유 이벤트를 모니터링하는 방법을 설명합니다. 공급자 감사 로그는 공급자가 수행한 작업과 공급자의 공유 데이터에 대해 받는 사람이 수행한 작업을 기록합니다. 받는 사람 감사 로그는 공유 액세스 및 공급자 개체 관리와 관련된 이벤트를 기록합니다.
델타 공유 감사 로그 이벤트 목록을 보려면 델타 공유 이벤트를 참조 하세요.
요구 사항
감사 로그에 액세스하려면 계정 관리자가 Azure Databricks 계정에 대한 감사 로그 시스템 테이블을 사용하도록 설정해야 합니다. 시스템 테이블 사용을 참조 하세요. 감사 로그 시스템 테이블에 대한 자세한 내용은 감사 로그 시스템 테이블 참조를 참조하세요.
계정 관리자 또는 metastore 관리자가 아닌 경우 감사 로그를 읽을 수 있는 system.access.audit
액세스 권한이 부여되어야 합니다.
감사 로그에서 델타 공유 이벤트 보기
계정에 시스템 테이블이 사용하도록 설정된 경우 감사 로그가 저장 system.access.audit
됩니다. 또는 계정에 감사 로그 배달 설정이 있는 경우 로그가 배달되는 버킷 및 경로를 알아야 합니다.
기록된 이벤트
델타 공유 감사 로그 이벤트 목록을 보려면 델타 공유 이벤트를 참조 하세요.
받는 사람의 쿼리 결과에 대한 세부 정보 보기
공급자 로그에서 데이터 수신자의 쿼리가 응답을 받은 후 반환 deltaSharingQueriedTableChanges
deltaSharingQueriedTable
되고 기록되는 이벤트입니다. 공급자는 이러한 로그의 필드를 보고 response.result
받는 사람과 공유된 항목에 대한 자세한 내용을 볼 수 있습니다. 필드에는 다음 값이 포함될 수 있습니다. 현재 이 목록은 완전한 목록이 아닙니다.
"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"
기록된 오류
델타 공유 작업이 실패하면 로그 필드에 오류 메시지 response.error_message
와 함께 작업이 기록됩니다. <
와 >
문자 사이의 항목은 자리 표시자 텍스트를 나타냅니다.
공급자 로그의 오류 메시지
델타 공유는 데이터 공급자에 대해 다음과 같은 오류를 기록합니다.
델타 공유를 선택한 메타스토어에서 사용하도록 설정하지 않았습니다.
DatabricksServiceException: FEATURE_DISABLED: Delta Sharing is not enabled
존재하지 않는 카탈로그에서 작업을 시도했습니다.
DatabricksServiceException: CATALOG_DOES_NOT_EXIST: Catalog ‘<catalog>’ does not exist.
계정 관리자 또는 메타스토어 관리자가 아닌 사용자가 권한 있는 작업을 수행하려고 했습니다.
DatabricksServiceException: PERMISSION_DENIED: Only administrators can <operation-name> <operation-target>
메타스토어가 할당되지 않은 작업 영역의 메타스토어에서 작업을 시도했습니다.
DatabricksServiceException: INVALID_STATE: Workspace <workspace-name> is no longer assigned to this metastore
요청에 수신자 이름 또는 공유 이름이 없습니다.
DatabricksServiceException: INVALID_PARAMETER_VALUE: CreateRecipient/CreateShare Missing required field: <recipient-name>/<share-name>
요청에 잘못된 수신자 이름 또는 공유 이름이 포함되었습니다.
DatabricksServiceException: INVALID_PARAMETER_VALUE: CreateRecipient/CreateShare <recipient-name>/<share-name> is not a valid name
사용자가 Unity 카탈로그 메타스토어에 없는 테이블을 공유하려고 했습니다.
DatabricksServiceException: INVALID_PARAMETER_VALUE: Only managed or external table on Unity Catalog can be added to a share
사용자가 이미 변경된 상태이고 이전 토큰이 아직 만료되지 않은 수신자를 변경하려고 했습니다.
DatabricksServiceException: INVALID_PARAMETER_VALUE: There are already two active tokens for recipient <recipient-name>
사용자가 기존 수신자 또는 공유와 동일한 이름으로 새 수신자 또는 공유를 만들려고 했습니다.
DatabricksServiceException: RECIPIENT_ALREADY_EXISTS/SHARE_ALREADY_EXISTS: Recipient/Share <name> already exists`
사용자가 존재하지 않는 수신자 또는 공유에 대해 작업을 수행하려고 했습니다.
DatabricksServiceException: RECIPIENT_DOES_NOT_EXIST/SHARE_DOES_NOT_EXIST: Recipient/Share '<name>' does not exist
사용자가 공유에 테이블을 추가하려고 했지만 해당 테이블이 이미 추가되었습니다.
DatabricksServiceException: RESOURCE_ALREADY_EXISTS: Shared Table '<name>' already exists
사용자가 존재하지 않는 테이블을 참조하는 작업을 수행하려고 했습니다.
DatabricksServiceException: TABLE_DOES_NOT_EXIST: Table '<name>' does not exist
사용자가 존재하지 않는 스키마를 참조하는 작업을 수행하려고 했습니다.
DatabricksServiceException: SCHEMA_DOES_NOT_EXIST: Schema '<name>' does not exist
사용자가 존재하지 않는 공유에 액세스하려고 했습니다.
DatabricksServiceException: SHARE_DOES_NOT_EXIST: Share <share-name> does not exist.
받는 사람 로그의 오류 메시지
델타 공유는 데이터 수신자에 대해 다음과 같은 오류를 기록합니다.
사용자가 액세스 권한이 없는 공유에 액세스하려고 했습니다.
DatabricksServiceException: PERMISSION_DENIED: User does not have SELECT on Share <share-name>
사용자가 존재하지 않는 공유에 액세스하려고 했습니다.
DatabricksServiceException: SHARE_DOES_NOT_EXIST: Share <share-name> does not exist.
사용자가 공유에 없는 테이블에 액세스하려고 했습니다.
DatabricksServiceException: TABLE_DOES_NOT_EXIST: <table-name> does not exist.