Share via


Azure Stream Analytics - Delta Lake 테이블에 쓰기

Delta Lake는 데이터 레이크에 안정성, 품질 및 성능을 제공하는 개방형 형식입니다. Azure Stream Analytics를 사용하면 코드 한 줄도 작성할 필요 없이 델타 레이크 테이블에 스트리밍 데이터를 직접 쓸 수 있습니다.

Azure Data Lake Storage Gen2 계정의 새 또는 미리 생성된 델타 테이블에 네이티브 델타 레이크 출력 커넥터를 통해 쓰도록 스트림 분석 작업을 구성할 수 있습니다. 이 커넥터는 추가 모드의 델타 테이블에 대한 고속 수집에 최적화되어 있으며 정확히 한 번 의미 체계를 제공하므로 데이터가 손실되거나 중복되지 않습니다. Azure Event Hubs에서 실시간 데이터 스트림을 Delta 테이블로 수집하면 임시 대화형 또는 일괄 처리 분석을 수행할 수 있습니다.

Delta Lake 구성

Delta Lake에서 데이터를 쓰려면 Azure Data Lake Storage Gen2 계정에 연결해야 합니다. 아래 표에는 Delta Lake 구성과 관련된 속성이 나열됩니다.

속성 이름 설명
이벤트 serialization 형식 출력 데이터에 대한 직렬화 형식입니다. JSON, CSV, AVRO 및 Parquet가 지원됩니다. Delta Lake는 여기에서 옵션으로 나열되어 있습니다. Delta Lake를 선택한 경우 데이터는 Parquet 형식입니다.
델타 경로 이름 지정된 컨테이너 내에서 Delta Lake 테이블을 작성하는 데 사용되는 경로입니다. 여기에는 테이블 이름이 포함됩니다. 자세한 내용은 다음 섹션을 참조하세요.
파티션 열 선택 사항. 파티션에 대한 출력 데이터의 {field} 이름입니다. 하나의 파티션 열만 지원됩니다. 열의 값은 문자열 형식이어야 합니다.

ADLS Gen2 구성의 전체 목록을 보려면 ALDS Gen2 개요를 참조하세요.

델타 경로 이름

델타 경로 이름은 Azure Data Lake Storage Gen2에 저장된 Delta Lake 테이블의 위치와 이름을 지정하는 데 사용됩니다.

하나 이상의 경로 세그먼트를 사용하여 델타 테이블에 대한 경로와 델타 테이블 이름을 정의하도록 선택할 수 있습니다. 경로 세그먼트는 가상 디렉터리 이름에 해당하는 연속 구분 기호 문자 사이의 문자열입니다(예: 슬래시 /).

세그먼트 이름은 영숫자이며 공백, 하이픈 및 밑줄을 포함할 수 있습니다. 마지막 경로 세그먼트는 테이블 이름으로 사용됩니다.

델타 경로 이름에 대한 제한 사항은 다음과 같습니다.

  • 필드 이름은 대/소문자를 구분하지 않습니다. 예를 들어 서비스는 열 IDid.를 구분할 수 없습니다.
  • 동적 {field} 이름은 허용되지 않습니다. 예를 들어 {ID}는 텍스트 {ID}로 처리됩니다.
  • 이름을 구성하는 경로 세그먼트 수는 254개를 초과할 수 없습니다.

예제

델타 경로 이름에 대한 예:

  • 예제 1: WestUS/CA/factory1/device-table
  • 예제 2: Test/demo
  • 예제 3: mytable

예제 출력 파일:

  1. 선택한 컨테이너에서 디렉터리 경로가 되고 WestEurope/CA/factory1 델타 테이블 폴더 이름은 device-table이 됩니다.
  2. 선택한 컨테이너에서 디렉터리 경로는 데모 Test 이고 델타 테이블 폴더 이름은 데모입니다.
  3. 선택한 컨테이너에서 델타 테이블 폴더 이름은 mytable입니다.

새 테이블 만들기

동일한 이름과 델타 경로 이름으로 지정된 위치에 Delta Lake 테이블이 아직 없는 경우 기본적으로 Azure Stream Analytics는 새 델타 테이블을 만듭니다. 이 새 테이블은 다음 구성으로 만들어집니다.

표에 쓰기

델타 경로 이름으로 지정된 위치에 이미 동일한 이름의 Delta Lake 테이블이 있는 경우 기본적으로 Azure Stream Analytics는 기존 테이블에 새 레코드를 씁니다.

정확히 한 번만 배달

트랜잭션 로그를 사용하면 Delta Lake가 정확히 한 번 처리되도록 보장할 수 있습니다. 또한 Azure Stream Analytics는 단일 작업 실행 중에 Azure Data Lake Storage Gen2에 데이터를 출력할 때 정확히 한 번 배달합니다.

스키마 적용

스키마 적용은 테이블에 대한 모든 새 쓰기가 쓰기 시 대상 테이블의 스키마와 호환되도록 적용되어 데이터 품질을 보장한다는 것을 의미합니다.

출력 데이터의 모든 레코드는 기존 테이블의 스키마에 프로젝팅됩니다. 출력이 새 델타 테이블에 기록되는 경우 첫 번째 레코드를 사용하여 테이블 스키마가 만들어집니다. 들어오는 데이터에 기존 테이블 스키마에 비해 하나의 추가 열이 있는 경우 추가 열 없이 테이블에 기록됩니다. 들어오는 데이터에 기존 테이블 스키마에 비해 열이 하나 누락된 경우 열이 null인 테이블에 기록됩니다.

델타 테이블의 스키마와 스트리밍 작업 레코드의 스키마 사이에 교집합이 없는 경우 스키마 변환 실패의 인스턴스로 간주됩니다. 스키마 변환 실패로 간주되는 유일한 경우는 아닙니다.

스키마 변환 실패 시 작업 동작은 작업 수준에서 구성된 출력 데이터 오류 전달 정책을 따릅니다.

Delta 로그 검사점

Stream Analytics 작업은 주기적으로 V1 형식으로 델타 로그 검사포인트를 만듭니다. 델타 로그 검사포인트는 델타 테이블의 스냅샷 일반적으로 Stream Analytics 작업에서 생성된 데이터 파일의 이름을 포함합니다. 데이터 파일 수가 크면 큰 검사 지점으로 이어져 Stream Analytics 작업에서 메모리 문제가 발생할 수 있습니다.

제한 사항

  • 동적 파티션 키(Delta 경로에서 레코드 스키마 열의 이름 지정)는 지원되지 않습니다.
  • 여러 파티션 열은 지원되지 않습니다. 여러 파티션 열을 원하는 경우 쿼리에서 복합 키를 사용한 다음, 파티션 열로 지정하는 것이 좋습니다.
    • "SELECT concat (col1, col2) AS compositeColumn INTO [blobOutput] FROM [input]"과 같은 쿼리에서 복합 키를 만들 수 있습니다.
  • Delta Lake에 쓰는 것은 추가 사항일 뿐입니다.
  • 쿼리 테스트에서 스키마 검사를 사용할 수 없습니다.
  • 작은 파일 압축은 Stream Analytics에서 수행되지 않습니다.
  • 모든 데이터 파일은 압축 없이 만들어집니다.
  • 날짜 및 10진수 형식지원되지 않습니다.
  • 기록기 기능을 사용하여 작성기 버전 7 이상의 기존 테이블에 쓰기가 실패합니다.
  • Stream Analytics 작업이 Delta Lake에 데이터 일괄 처리를 쓰면 여러 파일 추가 작업을 생성할 수 있습니다. 단일 일괄 처리에 대해 생성된 파일 작업 추가가 너무 많으면 Stream Analytics 작업이 중단될 수 있습니다.
    • 생성된 파일 작업 추가 수는 다음과 같은 여러 요인에 의해 결정됩니다.
    • 일괄 처리에 대해 생성된 파일 작업 추가 수를 줄이려면 다음 단계를 수행할 수 있습니다.
  • Stream Analytics 작업은 단일 파트 V1 검사점을 읽고 쓸 수 있습니다. 다중 파트 검사포인트 및 검사점 V2 형식은 지원되지 않습니다.

다음 단계