Azure Stream Analytics 사용자 지정 Blob 출력 분할

Azure Stream Analytics는 사용자 지정 필드 또는 특성과 사용자 지정 날짜/시간 경로 패턴을 이용한 사용자 지정 Blob 출력 분할을 지원합니다.

사용자 지정 필드 또는 특성

사용자 지정 필드 또는 입력 특성은 출력을 더 많이 제어하도록 허용하여 다운스트림 데이터 처리 및 보고 워크플로를 개선합니다.

파티션 키 옵션

입력 데이터를 분할하는 데 사용되는 파티션 키 또는 열 이름에는 Blob 이름에 대해 허용되는 어떤 문자도 사용할 수 있습니다. 별칭과 함께 사용하지 않는 한, 중첩된 필드를 파티션 키로 사용할 수 없지만 특정 문자를 사용하여 파일의 계층 구조를 만들 수는 있습니다. 예를 들어, 다음 쿼리에서 다른 두 열의 데이터를 결합하여 고유한 파티션 키를 만드는 열을 만들 수 있습니다.

SELECT name, id, CONCAT(name, "/", id) AS nameid

이파티션 키는 NVARCHAR(MAX), BIGINT, FLOAT 또는 BIT(1.2 호환성 수준 이상)여야 합니다. DateTime, Array 및 Records 형식은 지원되지 않지만 문자열로 변환되는 경우 파티션 키로 사용할 수 있습니다. 자세한 내용은 Azure Stream Analytics 데이터 형식을 참조하세요.

예시

한 작업이 외부 비디오 게임 서비스에 연결된 라이브 사용자 세션에서 입력 데이터를 가져오고, 수집된 데이터에 세션을 식별하기 위한 client_id 열이 포함되어 있다고 가정해 봅시다. 데이터를 client_id로 분할하기 위해, 작업을 만들 때 Blob 출력 속성에 {client_id} 파티션 토큰이 포함되도록 Blob 경로 패턴 필드를 설정합니다. 다양한 client_id 값을 갖는 데이터가 Stream Analytics 작업을 통해 흐르면 폴더별 단일 client_id 값에 따라 별도의 폴더에 출력 데이터가 저장됩니다.

Path pattern with client id

마찬가지로, 작업 입력이 수백만 개의 센서에서 얻은 센서 데이터이고, 각 센서에 sensor_id가 있는 경우 각 센서 데이터를 서로 다른 폴더에 분할할 수 있도록 경로 패턴은 {sensor_id}입니다.

REST API를 사용하는 경우 해당 요청에 사용되는 JSON 파일의 출력 섹션은 다음 이미지와 같을 수 있습니다.

REST API output

작업이 실행되기 시작하면 clients 컨테이너는 다음 이미지와 비슷하게 보입니다.

Clients container

각 폴더에 여러 Blob이 포함될 수 있으며, 각 Blob에는 하나 이상의 레코드가 포함됩니다. 위의 예제에서 "06000000" 레이블이 지정된 폴더에는 단일 Blob이 있으며 그 콘텐츠는 다음과 같습니다.

Blob contents

Blob의 각 레코드에는 폴더 이름과 일치하는 client_id 열이 있습니다. 출력 경로의 출력을 분할하는 데 사용된 열이 client_id이기 때문입니다.

제한 사항

  1. 경로 패턴 Blob 출력 속성에는 오직 하나의 사용자 지정 파티션 키만 허용됩니다. 다음 경로 패턴이 모두 유효합니다.

    • cluster1/{date}/{aFieldInMyData}
    • cluster1/{time}/{aFieldInMyData}
    • cluster1/{aFieldInMyData}
    • cluster1/{date}/{time}/{aFieldInMyData}
  2. 고객이 입력 필드를 두 개 이상 사용하려는 경우 CONCAT를 사용하여 Blob 출력의 사용자 지정 경로 파티션에 대한 쿼리에서 복합 키를 만들 수 있습니다. 예를 들어 concat(col1, col2)을 입력에서 blobOutput에 compositeColumn으로 선택합니다. 그런 다음, compositeColumn을 Blob 저장소의 사용자 지정 경로로 지정할 수 있습니다.

  3. 파티션 키는 대/소문자를 구분하지 않으므로 Johnjohn과 같은 파티션 키는 동등합니다. 또한 식을 파티션 키로 사용할 수 없습니다. 예를 들어, {columnA + columnB}는 작동하지 않습니다.

  4. 파티션 키 카디널리티 8000 미만의 레코드로 입력 스트림이 구성되면 레코드가 기존 Blob에 추가되고 필요할 때만 새 Blob을 만듭니다. 카디널리티가 8000을 넘으면 기존 Blob이 작성되고 파티션 키가 동일한 임의의 수의 레코드에 대한 새 Blob이 생성된다는 보장이 없습니다.

  5. blob 출력이 변경 불가능으로 구성된 경우 Stream Analytics는 데이터가 전송될 때마다 새 blob을 만듭니다.

사용자 지정 날짜/시간 경로 패턴

사용자 지정 날짜/시간 경로 패턴을 사용하면 Hive 스트리밍 규칙을 사용하여 정렬하는 출력 형식을 지정하여 Azure Stream Analytics에서 다운스트림 처리를 위해 Azure Databricks 및 Azure HDInsight에 데이터를 보낼 수 있는 기능을 부여할 수 있습니다. 사용자 지정 날짜/시간 경로 패턴은 서식 지정자와 함께 Blob 출력의 경로 접두사 필드에서 datetime 키워드를 사용하여 쉽게 구현됩니다. 예: {datetime:yyyy}.

지원되는 토큰

다음 서식 지정자 토큰은 사용자 지정 날짜/시간 형식을 설정하기 위해 단독 또는 함께 사용할 수 있습니다.

형식 지정자 설명 예제 시간 2018-01-02T10:06:08에 대한 결과
{datetime:yyyy} 연도(4자리 숫자) 2018
{datetime:MM} 월(01-12) 01
{datetime:M} 월(1-12) 1
{datetime:dd} 일(01-31) 02
{datetime:d} 일(1-31) 2
{datetime:HH} 시간(00-23의 24시간 형식) 10
{datetime:mm} 분(00-60) 06
{datetime:m} 분(0-60) 6
{datetime:ss} 초(00-60) 08

사용자 지정 날짜/시간 패턴을 사용하려는 경우 {date} 및/또는 {time} 토큰을 경로 접두사에 추가하여 기본 제공 날짜/시간 서식을 사용하여 드롭다운을 생성할 수 있습니다.

Stream Analytics old DateTime formats

확장성 및 제한 사항

경로 접두사 문자 제한에 도달할 때까지 경로 패턴에서 원하는 만큼 {datetime:<specifier>} 토큰을 사용할 수 있습니다. 서식 지정자는 날짜 및 시간 드롭다운 목록에서 이미 나열된 조합 이외의 단일 토큰 내에서 결합할 수 없습니다.

logs/MM/dd 경로 파티션의 경우:

유효한 식 잘못된 식
logs/{datetime:MM}/{datetime:dd} logs/{datetime:MM/dd}

경로 접두사에서 동일한 서식 지정자를 여러 번 사용할 수 있습니다. 토큰은 매번 반복되어야 합니다.

Hive 스트리밍 규칙

Blob Storage에 대한 사용자 지정 경로 패턴은 Hive 스트리밍 규칙에서 사용될 수 있습니다. 폴더 이름에서 column=으로 레이블이 지정된 폴더가 생성됩니다.

예: year={datetime:yyyy}/month={datetime:MM}/day={datetime:dd}/hour={datetime:HH}.

사용자 지정 출력은 테이블을 변경하고 파티션을 수동으로 추가하는 번거로움을 없애서 Azure Stream Analytics와 Hive 간에 데이터를 전송합니다. 대신, 다음을 사용하여 자동으로 여러 폴더를 추가할 수 있습니다.

MSCK REPAIR TABLE while hive.exec.dynamic.partition true

예시

Azure Stream Analytics Azure Portal 빠른 시작 가이드에 따라 스토리지 계정, 리소스 그룹, Stream Analytics 작업 및 입력 원본을 만듭니다. 빠른 시작 가이드에서 사용된 동일한 샘플 데이터를 사용하며 GitHub에서도 사용 가능합니다.

다음 구성을 사용하여 Blob 출력 싱크를 만듭니다.

Stream Analytics create blob output sink

전체 경로 패턴은 다음과 같습니다.

year={datetime:yyyy}/month={datetime:MM}/day={datetime:dd}

작업을 시작하는 경우 경로 패턴에 따라 폴더 구조는 Blob 컨테이너에서 생성됩니다. 일 수준으로 드릴다운할 수 있습니다.

Stream Analytics blob output with custom path pattern

다음 단계