Share via


복사 활동의 데이터 일관성 확인

적용 대상: Azure Data Factory Azure Synapse Analytics

기업용 올인원 분석 솔루션인 Microsoft Fabric의 Data Factory를 사용해 보세요. Microsoft Fabric은 데이터 이동부터 데이터 과학, 실시간 분석, 비즈니스 인텔리전스 및 보고에 이르기까지 모든 것을 다룹니다. 무료로 새 평가판을 시작하는 방법을 알아봅니다!

원본의 데이터를 대상 저장소로 이동하는 경우, 복사 작업에서 추가로 데이터 일관성을 확인하여 데이터가 원본에서 대상 저장소로 복사되도록 할 뿐만 아니라 원본과 대상 저장소 간에 일관성을 확인하는 옵션을 제공합니다. 데이터 이동 중에 일관되지 않은 파일이 발견되면 복사 작업을 중단하거나, 일관되지 않은 파일을 건너뛰도록 내결함성 설정을 사용하도록 설정하여 나머지를 계속 복사합니다. 복사 작업에서 세션 로그 설정을 사용하도록 설정하여 건너뛴 파일 이름을 가져올 수 있습니다. 자세한 내용은 복사 작업의 세션 로그를 참조하세요.

지원되는 데이터 저장소 및 시나리오

  • 데이터 일관성 확인은 FTP, SFTP, HTTP, Snowflake, Office 365 및 Azure Databricks Delta Lake를 제외한 모든 커넥터에서 지원됩니다.
  • 준비 복사 시나리오에서는 데이터 일관성 확인이 지원되지 않습니다.
  • 이진 파일을 복사하는 경우, 데이터 일관성 확인은 복사 작업에 'PreserveHierarchy' 동작이 설정된 경우에만 사용할 수 있습니다.
  • 데이터 일관성 확인을 사용하도록 설정된 단일 복사 작업의 이진 파일 여러 개를 복사하는 경우, 일관성 없는 파일을 건너뛰도록 하는 내결함성 설정을 사용하여 해당 복사 작업을 취소할 지 나머지를 계속해서 복사할 지를 선택할 수 있는 옵션을 사용할 수 있습니다.
  • 데이터 일관성 확인을 사용하도록 설정된 단일 복사 작업의 테이블을 복사하는 경우, 원본에서 읽은 행 개수가 대상으로 복사된 행 개수에 호환되지 않는 건너뛴 행 개수를 더한 값과 다르면 복사 작업이 실패합니다.

구성

다음 예제에서는 복사 활동에서 데이터 일관성 확인을 사용하기 위한 JSON 정의를 제공합니다.

{
  "name":"CopyActivityDataConsistency",
  "type":"Copy",
  "typeProperties": { 
    "source": { 
        "type": "BinarySource", 
        "storeSettings": { 
            "type": "AzureDataLakeStoreReadSettings", 
            "recursive": true 
        } 
    }, 
    "sink": { 
        "type": "BinarySink", 
        "storeSettings": { 
            "type": "AzureDataLakeStoreWriteSettings" 
        } 
    }, 
    "validateDataConsistency": true, 
    "skipErrorFile": { 
        "dataInconsistency": true 
    }, 
    "logSettings": {
        "enableCopyActivityLog": true,
        "copyActivityLogSettings": {
            "logLevel": "Warning",
            "enableReliableLogging": false
        },
        "logLocationSettings": {
            "linkedServiceName": {
               "referenceName": "ADLSGen2",
               "type": "LinkedServiceReference"
            },
            "path": "sessionlog/"
        }
    }
} 
속성 설명 허용된 값 필수
validateDataConsistency 이 속성에 true를 설정하면 이진 파일을 복사하는 경우의 복사 작업은 원본 저장소에서 대상 저장소로 복사된 각 이진 파일의 파일 크기, lastModifiedDate 및 MD5 체크섬을 확인하여 원본 저장소와 대상 저장소 간 데이터 일관성을 확인합니다. 표 형식 데이터를 복사하는 경우, 원본에서 읽은 전체 행 개수가 대상으로 복사된 행 개수에 호환되지 않는 건너뛴 행 개수를 더한 값과 같은지 확인하기 위해 복사 작업은 작업 완료 후에 전체 행 개수를 확인합니다. 이 옵션을 사용하도록 설정하면 복사 성능이 영향을 받습니다. True
False(기본값)
아니요
dataInconsistency skipErrorFile 속성 모음 내에서 키-값 쌍 중 하나를 선택하여 일관되지 않은 파일을 건너뛸지 여부를 결정합니다.
- True: 일관되지 않은 파일을 건너뛰고 나머지를 복사하려고 합니다.
- False: 일관되지 않은 파일이 발견되면 복사 작업을 중단하려고 합니다.
이 속성은 이진 파일을 복사할 때 validateDataConsistency를 True로 설정한 경우에만 유효합니다.
True
False(기본값)
아니요
logSettings 세션 로그에서 건너뛴 파일을 기록할 수 있도록 지정할 수 있는 속성 그룹입니다. 아니요
linkedServiceName 세션 로그 파일을 저장할 Azure Blob Storage 또는 Azure Data Lake Storage Gen2의 연결된 서비스입니다. 로그 파일을 저장하는 데 사용되는 인스턴스를 참조하는 AzureBlobStorage 또는 AzureBlobFS 형식의 연결된 서비스 이름입니다. 아니요
경로 로그 파일의 경로입니다. 로그 파일을 저장할 경로를 지정합니다. 경로를 지정하지 않으면 서비스가 대신 컨테이너를 만듭니다. 아니요

참고 항목

  • 이진 파일을 Azure Blob이나 Azure Data Lake Storage Gen2에서 복사하거나 해당 위치로 복사하는 경우, 서비스는 Azure Blob APIAzure Data Lake Storage Gen2 API를 사용하여 차단 수준 MD5 체크섬 확인을 실행합니다. 파일의 ContentMD5가 Azure Blob 또는 Azure Data Lake Storage Gen2에 데이터 원본으로 존재하는 경우, 서비스는 해당 파일도 마찬가지로 읽은 후에 파일 수준 MD5 체크섬 확인을 실행합니다. Azure Blob 또는 Azure Data Lake Storage Gen2를 데이터 대상으로 하여 파일을 복사한 후, 서비스는 ContentMD5를 Azure Blob 또는 Azure Data Lake Storage Gen2에 기록하여 데이터 일관성 확인을 위해 다운스트림 애플리케이션에서 이것을 사용할 수 있도록 합니다.
  • 스토리지 저장소 간의 이진 파일 복사 시 서비스는 파일 크기 확인을 실행합니다.

모니터링

복사 활동의 출력

복사 활동이 완전히 실행된 후 각 복사 활동 실행의 출력에서 데이터 일관성 확인 결과를 확인할 수 있습니다.

"output": {
            "dataRead": 695,
            "dataWritten": 186,
            "filesRead": 3,  
            "filesWritten": 1, 
            "filesSkipped": 2, 
            "throughput": 297,
            "logFilePath": "myfolder/a84bf8d4-233f-4216-8cb5-45962831cd1b/",
            "dataConsistencyVerification": 
           { 
                "VerificationResult": "Verified", 
                "InconsistentData": "Skipped" 
           } 
        }

“dataConsistencyVerification 속성”에서 데이터 일관성 확인의 세부 정보를 확인할 수 있습니다.

VerificationResult 값:

  • Verified: 복사된 데이터가 원본 저장소와 대상 저장소 간에 일관된 것으로 확인되었습니다.
  • NotVerified: 복사 작업에서 validateDataConsistency를 사용하도록 설정하지 않았기 때문에 복사된 데이터의 일관성의 확인되지 않았습니다.
  • Unsupported: 이 특정 복사 쌍에 대해서는 데이터 일관성 확인이 지원되지 않기 때문에 복사된 데이터의 일관성이 확인되지 않았습니다.

InconsistentData 값:

  • Found: 복사 작업이 일관되지 않은 데이터를 찾았습니다.
  • Skipped: 복사 작업이 일관되지 않은 데이터를 찾고 건너뛰었습니다.
  • None: 복사 작업에서 일치하지 않는 데이터를 찾지 않았습니다. 데이터가 원본 저장소와 대상 저장소 간에 일관된 것으로 확인되었거나 복사 활동에서 validateDataConsistency를 사용하지 않도록 설정했기 때문일 수 있습니다.

복사 작업의 세션 로그

일관되지 않은 파일을 기록하도록 구성할 경우 https://[your-blob-account].blob.core.windows.net/[path-if-configured]/copyactivity-logs/[copy-activity-name]/[copy-activity-run-id]/[auto-generated-GUID].csv 경로에서 로그 파일을 찾을 수 있습니다. 로그 파일은 csv 파일입니다.

로그 파일의 스키마는 다음과 같습니다.

설명
타임스탬프 서비스가 일관되지 않은 파일을 건너뛴 타임스탬프입니다.
수준 이 항목의 로그 수준입니다. 파일 건너뛰기를 표시하는 항목은 '경고' 수준입니다.
OperationName 각 파일에 대한 복사 작업 동작입니다. 건너뛸 파일을 지정하는 것이 'FileSkip'입니다.
OperationItem 건너뛸 파일 이름입니다.
메시지 파일을 건너뛰는 이유를 설명하는 추가 정보입니다.

로그 파일의 예는 다음과 같습니다.

Timestamp, Level, OperationName, OperationItem, Message
2020-02-26 06:22:56.3190846, Warning, FileSkip, "sample1.csv", "File is skipped after read 548000000 bytes: ErrorCode=DataConsistencySourceDataChanged,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=Source file 'sample1.csv' is changed by other clients during the copy activity run.,Source=,'." 

위 로그 파일에서 원본 저장소와 대상 저장소 간에 일관된 것으로 확인되지 않았기 때문에 sample1.csv를 건너뛰었음을 알 수 있습니다. sample1.csv가 일관되지 않은 이유가 복사 작업이 복사하는 동안 동시에 다른 애플리케이션이 해당 파일을 변경하고 있었기 때문임을 나타내는 자세한 정보를 확인할 수 있습니다.

다른 복사 작업 문서를 참조하세요.