Azure Data Explorer를 Azure Data Factory와 통합

ADF(Azure Data Factory)는 다양한 데이터 저장소를 통합하고 데이터에 대한 작업을 수행할 수 있는 클라우드 기반 데이터 통합 서비스입니다. ADF를 사용하면 데이터 이동 및 데이터 변환을 오케스트레이션하고 자동화하기 위한 데이터 기반 워크플로를 만들 수 있습니다. Azure Data Explorer는 Azure Data Factory에서 지원되는 데이터 저장소 중 하나입니다.

Azure Data Explorer에 대한 Azure Data Factory 작업

Azure Data Explorer 사용자는 Azure Data Factory와의 다양한 통합을 사용할 수 있습니다.

복사 활동

Azure Data Factory 복사 작업은 데이터 저장소 간에 데이터를 전송하는 데 사용됩니다. Azure Data Explorer가 원본으로 지원되는 경우에는 Azure Data Explorer에서 지원되는 데이터 저장소로 데이터가 복사되고 싱크로 지원되는 경우에는 지원되는 데이터 저장소에서 Azure Data Explorer로 데이터가 복사됩니다. 자세한 내용은 Azure Data Factory를 사용하여 Azure Data Explorer에(서) 데이터 복사를 참조하세요. 자세한 연습은 Azure Data Factory Azure Data Explorer 데이터 로드를 참조하세요. Azure Data Explorer는 Azure 내에서 데이터를 복사할 때 사용되는 Azure IR(Integration Runtime) 및 자체 호스팅 IR에서 지원되며, 온-프레미스 또는 액세스 제어를 사용하는 네트워크(예: Azure Virtual Network)에 있는 데이터 저장소에(서) 데이터를 복사할 때 사용됩니다. 자세한 내용은 사용할 IR을 참조하세요.

복사 작업을사용하고 연결된 서비스 또는 데이터 세트를 만들 때는 이전 데이터 저장소 Kusto가 아닌 데이터 저장소 Azure Data Explorer(Kusto) 를 선택합니다.

조회 작업

조회 작업은 Azure Data Explorer에서 쿼리를 실행하는 데 사용됩니다. 쿼리 결과는 조회 작업의 출력으로 반환되며 ADF 조회 설명서에 설명된 대로 파이프라인의 다음 작업에서 사용할 수 있습니다.

이 작업에는 응답 크기 제한 5,000행 및 2MB의 외에도 쿼리 제한 시간 제한 1시간이 있습니다.

명령 작업

명령 작업을 사용하면 Azure Data Explorer 관리 명령을 실행할 수 있습니다. 쿼리와 달리 관리 명령은 잠재적으로 데이터 또는 메타데이터를 수정할 수 있습니다. 일부 관리 명령은 또는 .set-or-append와 같은 명령을 사용하여 Azure Data Explorer 데이터를 수집하거나 와 같은 .ingest명령을 사용하여 Azure Data Explorer 외부 데이터 저장소로 .export데이터를 복사하도록 대상으로 합니다. 명령 작업에 대한 자세한 연습은 Azure Data Factory 명령 작업을 사용하여 Azure Data Explorer 관리 명령 실행을 참조하세요. 관리 명령을 사용하여 데이터를 복사하면 복사 작업 것보다 더 빠르고 저렴할 수 있습니다. 명령 작업과 복사 작업을 언제 사용할지 판단하려면 데이터를 복사하는 경우 복사 작업과 명령 작업 중에 선택을 참조하세요.

데이터베이스 템플릿에서 대량 복사

Azure Data Factory 템플릿을 사용하여 데이터베이스에서 Azure Data Explorer로 대량 복사는 미리 정의된 Azure Data Factory 파이프라인입니다. 템플릿은 데이터를 더 빨리 복사하기 위해 데이터베이스당 또는 테이블당 많은 파이프라인을 만드는 데 사용됩니다.

데이터 흐름 매핑

Azure Data Factory 매핑 데이터 흐름은 시각적으로 디자인된 데이터 변환이며, 데이터 엔지니어가 코드를 작성하지 않고도 그래픽 데이터 변환 논리를 개발할 수 있습니다. 데이터 흐름을 만들고 Azure Data Explorer에 데이터를 수집하려면 다음 방법을 사용합니다.

  1. 매핑 데이터 흐름을 만듭니다.
  2. 데이터를 Azure Blob에 내보냅니다.
  3. Event Grid 또는 ADF 복사 작업을 정의하여 Azure Data Explorer에 데이터를 수집합니다.

데이터를 복사할 때 복사와 Azure Data Explorer 명령 작업 중에 선택

이 섹션에서는 데이터 복사 요구 사항에 맞는 올바른 작업을 선택하는 데 도움이 됩니다.

Azure Data Explorer에(서) 데이터를 복사하는 경우 Azure Data Factory에서 사용할 수 있는 두 가지 옵션이 있습니다.

  • 복사 작업.
  • Azure Data Explorer 명령 작업 - Azure Data Explorer 데이터를 전송하는 관리 명령 중 하나를 실행합니다.

Azure Data Explorer에서 데이터 복사

복사 작업 또는 .export 명령을 사용하여 Azure Data Explorer에서 데이터를 복사할 수 있습니다. .export 명령은 쿼리를 실행한 다음, 쿼리 결과를 내보냅니다.

다음 표에서 Azure Data Explorer에서 데이터를 복사하는 복사 작업과 .export 명령에 대한 비교를 참조하세요.

복사 활동 .export 명령
흐름 설명 ADF는 Kusto에 대해 쿼리를 실행하고 결과를 처리한 다음, 대상 데이터 저장소에 보냅니다.
(Azure Data Explorer > ADF > 싱크 데이터 저장소)
ADF는 .export Azure Data Explorer 관리 명령을 보내 명령을 실행하고 대상 데이터 저장소에 직접 데이터를 보냅니다.
(** Azure Data Explorer > 싱크 데이터 저장소**)
지원되는 대상 데이터 저장소 지원되는 다양한 데이터 저장소 ADLSv2, Azure Blob, SQL Database
성능 중앙 집중형
  • 분산형(기본값), 여러 노드에서 동시에 데이터 내보내기
  • 더 빠르고 COGS(판매 제품 원가) 효율적
서버 제한 쿼리 제한을 확장할/사용하지 않을 수 있습니다. 기본적으로 ADF 쿼리는 다음을 포함합니다.
  • 크기 제한은 레코드 500,000개 또는 64MB입니다.
  • 제한 시간은 10분입니다.
  • noTruncation이 false로 설정됩니다.
기본적으로 쿼리 제한이 확장되거나 사용되지 않습니다.
  • 크기 제한이 사용되지 않습니다.
  • 서버 제한 시간이 1시간으로 연장됩니다.
  • MaxMemoryConsumptionPerIteratorMaxMemoryConsumptionPerQueryPerNode는 최대(5GB, TotalPhysicalMemory/2)로 확장됩니다.

복사 대상이 .export 명령에서 지원하는 데이터 저장소 중 하나이고 복사 작업 기능이 중요하지 않은 경우 .export 명령을 선택합니다.

Azure Data Explorer에 데이터 복사

복사 작업 또는 쿼리에서 수집(.set-or-append, .set-or-replace, .set, .replace)스토리지에서 수집(.ingest)과 같은 수집 명령을 사용하여 Azure Data Explorer에 데이터를 복사할 수 있습니다.

다음 표에서 Azure Data Explorer에 데이터를 복사하는 복사 작업과 수집 명령에 대한 비교를 참조하세요.

복사 활동 쿼리에서 수집
.set-or-append / .set-or-replace / .set / .replace
스토리지에서 수집
.ingest
흐름 설명 ADF는 원본 데이터 저장소에서 데이터를 가져와서 테이블 형식으로 변환하고 필요한 스키마 매핑을 변경합니다. 그런 다음, ADF는 데이터를 Azure Blob에 업로드하여 청크로 분할한 다음, Blob을 다운로드하여 Azure Data Explorer 테이블에 수집합니다.
(원본 데이터 저장소 > ADF > Azure Blob Azure > Data Explorer)
이러한 명령은 쿼리 또는 .show 명령을 실행하고 쿼리 결과를 테이블(Azure Data Explorer Azure Data Explorer>)으로 수집할 수 있습니다. 이 명령은 하나 이상의 클라우드 스토리지 아티팩트에서 데이터를 "끌어와서" 테이블에 데이터를 수집합니다.
지원되는 원본 데이터 저장소 다양한 옵션 ADLS Gen 2, Azure Blob, SQL( sql_request() 플러그 인 사용), Azure Cosmos DB( cosmosdb_sql_request 플러그 인 사용) 및 HTTP 또는 Python API를 제공하는 기타 데이터 저장소. 파일 시스템, Azure Blob Storage, ADLS Gen 1, ADLS Gen 2
성능 수집은 큐에 추가되어 관리되므로 소규모 수집을 보장하고 부하 분산, 재시도 및 오류 처리를 제공하여 고가용성을 보장합니다.
  • 이러한 명령은 대량 데이터 가져오기에 맞게 설계되지 않았습니다.
  • 예상대로 작동하고 저렴합니다. 하지만 프로덕션 시나리오의 경우 및 트래픽 속도와 데이터 크기가 큰 경우에는 복사 작업을 사용합니다.
서버 제한
  • 크기 제한이 없습니다.
  • 최대 시간 제한: 수집된 Blob당 1시간입니다.
  • 쿼리 부분에는 크기 제한만 있으며 noTruncation=true를 지정하여 건너뛸 수 있습니다.
  • 최대 시간 제한: 1시간.
  • 크기 제한이 없습니다.
  • 최대 시간 제한: 1시간.

  • ADF에서 Azure Data Explorer로 데이터를 복사하는 경우 ingest from query 명령을 사용합니다.
  • 큰 데이터 세트(>1GB)의 경우 복사 작업 사용합니다.

필요한 사용 권한

다음 표에는 Azure Data Factory와의 통합에서 다양한 단계에 필요한 권한이 나열되어 있습니다.

단계 작업(Operation) 최소 권한 수준 참고
연결된 서비스 만들기 데이터베이스 탐색 데이터 뷰어
ADF를 사용하여 로그인한 사용자에게 데이터베이스 메타데이터를 읽을 수 있는 권한을 부여해야 합니다.
사용자는 데이터베이스 이름을 수동으로 제공할 수 있습니다.
연결을 테스트 데이터베이스 모니터 또는 테이블 수집기
데이터베이스 수준 .show 명령 또는 테이블 수준 수집을 실행할 수 있는 권한을 서비스 주체에게 부여해야 합니다.
  • TestConnection은 데이터베이스가 아닌 클러스터에 대한 연결을 확인합니다. 데이터베이스가 없더라도 성공할 수 있습니다.
  • 테이블 관리자 권한으로는 충분하지 않습니다.
데이터 세트 만들기 테이블 탐색 데이터베이스 모니터
ADF를 사용하여 로그인한 사용자에게 데이터베이스 수준 .show 명령을 실행할 수 있는 권한을 부여해야 합니다.
사용자는 테이블 이름을 수동으로 제공할 수 있습니다.
데이터 세트 만들기 또는 복사 작업 데이터 미리 보기 데이터 뷰어
데이터베이스 메타데이터를 읽을 수 있는 권한을 서비스 주체에게 부여해야 합니다.
스키마 가져오기 데이터 뷰어
데이터베이스 메타데이터를 읽을 수 있는 권한을 서비스 주체에게 부여해야 합니다.
Azure Data Explorer 테이블 형식 복사의 원본인 경우 ADF는 사용자가 스키마를 명시적으로 가져오지 않은 경우에도 스키마를 자동으로 가져옵니다.
싱크로 Azure Data Explorer 이름별 열 매핑 만들기 데이터베이스 모니터
데이터베이스 수준 .show 명령을 실행할 수 있는 권한을 서비스 주체에게 부여해야 합니다.
  • 모든 필수 작업은 테이블 수집기에서 작동합니다.
  • 일부 선택적 작업은 실패할 수 있습니다.
  • 테이블에 CSV 매핑 만들기
  • 매핑 삭제
테이블 수집기 또는 데이터베이스 관리자
테이블을 변경할 수 있는 권한을 서비스 주체에게 부여해야 합니다.
데이터 수집 테이블 수집기 또는 데이터베이스 관리자
테이블을 변경할 수 있는 권한을 서비스 주체에게 부여해야 합니다.
Azure Data Explorer가 원본인 경우 쿼리 실행 데이터 뷰어
데이터베이스 메타데이터를 읽을 수 있는 권한을 서비스 주체에게 부여해야 합니다.
Kusto 명령 각 명령의 권한 수준에 따릅니다.

성능

Azure Data Explorer가 원본이고 쿼리가 포함된 조회, 복사 또는 명령 작업을 사용하는 경우 쿼리 모범 사례에서 성능 정보를 참조하고 복사 작업에 대한 ADF 설명서를 참조하세요.

이 섹션에서는 Azure Data Explorer가 싱크인 복사 작업의 사용에 대해 다룹니다. Azure Data Explorer 싱크의 예상 처리량은 11~13MBps입니다. 다음 표에서는 Azure Data Explorer 싱크의 성능에 영향을 미치는 매개 변수에 대해 자세히 설명합니다.

매개 변수 메모
구성 요소 지리적 근접성 모든 구성 요소를 동일한 지역에 배치합니다.
  • 원본 및 싱크 데이터 저장소
  • ADF 통합 런타임
  • Azure Data Explorer 클러스터
적어도 통합 런타임이 Azure Data Explorer 클러스터와 동일한 지역에 있는지 확인합니다.
DIU 수 ADF에서 사용하는 4개의 DIU마다 하나의 VM.
DIU를 늘리면 원본이 여러 파일이 있는 파일 기반 저장소인 경우에만 도움이 됩니다. 그러면 각 VM이 다른 파일을 병렬로 처리합니다. 따라서 단일 대용량 파일을 복사하면 더 작은 여러 파일을 복사하는 것보다 대기 시간이 더 짧습니다.
Azure Data Explorer 클러스터의 양 및 SKU Azure Data Explorer 노드 수가 많을 경우 수집 처리 시간이 향상됩니다. 개발 SKU를 사용하면 성능이 심각하게 제한됩니다.
Parallelism 데이터베이스에서 많은 양의 데이터를 복사하려면 데이터를 분할한 다음 각 파티션을 병렬로 복사하는 ForEach 루프를 사용하거나 데이터베이스에서 Azure Data Explorer 템플릿으로 대량 복사를 사용합니다. 참고: 복사 작업의 설정>병렬 처리 수준은 Azure Data Explorer와 관련이 없습니다.
데이터 처리 복잡성 대기 시간은 원본 파일 형식, 열 매핑 및 압축에 따라 달라집니다.
통합 런타임을 실행하는 VM
  • Azure 복사의 경우 ADF VM 및 컴퓨터 SKU를 변경할 수 없습니다.
  • 온-프레미스에서 Azure로 복사의 경우 자체 호스팅 IR을 호스트하는 VM이 충분히 강력한지 확인합니다.

팁 및 일반적인 문제

작업 진행률 모니터링

  • 작업 진행률을 모니터링할 때 데이터 읽기는 이진 파일 크기에 따라 계산되고, 데이터가 역직렬화되고 압축을 풀면 기록된 데이터는 메모리 내 크기에 따라 계산되기 때문에 데이터 쓰기 속성이 데이터 읽기 속성보다 클 수 있습니다.

  • 작업 진행률을 모니터링할 때 데이터가 Azure Data Explorer 싱크에 써지는 것을 볼 수 있습니다. Azure Data Explorer 테이블을 쿼리할 때 데이터가 도착하지 않은 것을 볼 수 있습니다. Azure Data Explorer에 복사할 때 두 단계가 있기 때문입니다.

    • 첫 번째 단계는 원본 데이터를 읽고 900MB 청크로 분할하고 각 청크를 Azure Blob에 업로드합니다. 첫 번째 단계는 ADF 작업 진행률 보기에서 볼 수 있습니다.
    • 두 번째 단계는 모든 데이터가 Azure Blob에 업로드되면 시작됩니다. 클러스터의 노드는 Blob을 다운로드하고 싱크 테이블에 데이터를 수집합니다. 그러면 데이터가 Azure Data Explorer 테이블에 표시됩니다.

부적절한 이스케이프로 인한 CSV 파일 수집 실패

Azure Data Explorer에서는 CSV 파일이 RFC 4180에 맞춰 조정되어 있어야 합니다. 필요한 사항:

  • 이스케이프가 필요한 문자가 포함된 필드(예: " 및 새 줄)는 공백 없이 " 문자로 시작하고 끝나야 합니다. 필드 안의 모든 " 문자는 이중 " 문자( "" )를 사용하여 이스케이프됩니다. 예를 들어 "Hello, ""World"""Hello, "World" 콘텐츠가 있는 단일 열 또는 필드가 있는 단일 레코드가 있는 유효한 CSV 파일입니다.
  • 파일의 모든 레코드에는 동일한 수의 열과 필드가 있어야 합니다.

Azure Data Factory는 백슬래시(이스케이프) 문자를 허용합니다. Azure Data Factory를 사용하여 백슬래시 문자가 있는 CSV 파일을 생성한 경우 이 파일을 Azure Data Explorer에 수집하면 실패합니다.

예제

다음 텍스트 값은: Hello, "World"
ABC DEF
"ABC\D"EF
"ABC DEF

적합한 CSV 파일에 다음과 같이 나타나야 합니다. "Hello, ""World"""
"ABC DEF"
"""ABC\D""EF"
"""ABC DEF"

기본 이스케이프 문자(백슬래시)를 사용하면 다음 CSV는 Azure Data Explorer에서 작동하지 않습니다. "Hello, "World""
"ABC DEF"
""ABC\D"EF"
""ABC DEF"

중첩된 JSON 개체

JSON 파일을 Azure Data Explorer에 복사하는 경우 다음 사항에 유의하세요.

  • 배열은 지원되지 않습니다.
  • JSON 구조에 개체 데이터 형식이 포함되어 있으면 Azure Data Factory는 개체의 자식 항목을 평면화하고 각 자식 항목을 Azure Data Explorer 테이블의 다른 열에 매핑하려고 합니다. 전체 개체 항목이 Azure Data Explorer의 단일 열에 매핑되도록 하려면 다음을 수행합니다.
    • 전체 JSON 행을 Azure Data Explorer의 단일 동적 열에 수집합니다.
    • Azure Data Factory의 JSON 편집기를 사용하여 파이프라인 정의를 수동으로 편집합니다. 매핑에서
      • 각 자식 항목에 대해 만들어진 여러 매핑을 제거하고 개체 유형을 테이블 열에 매핑하는 단일 매핑을 추가합니다.
      • 닫는 대괄호 뒤에 쉼표를 추가하고 다음을 추가합니다.
        "mapComplexValuesToString": true.

Azure Data Explorer에 복사할 때 추가 속성 지정

파이프라인의 복사 작업에서 수집 속성을 지정하여 수집 속성을 추가할 수 있습니다.

속성 추가

  1. Azure Data Factory에서 작성자라는 연필 모양의 도구를 선택합니다.

  2. 파이프라인 아래에서 수집 속성을 추가할 파이프라인을 선택합니다.

  3. 작업 캔버스에서 데이터 복사 작업을 선택합니다.

  4. 작업 세부 정보에서 싱크를 선택한 다음, 추가 속성을 펼칩니다.

  5. 새로 만들기를 선택하고 필요에 따라 노드 추가 또는 배열 추가를 선택한 다음, 수집 속성 이름 및 값을 지정합니다. 속성을 더 추가하려면 이 단계를 반복합니다.

  6. 완료되면 파이프라인을 저장하고 게시합니다.

다음 단계