Azure Stream Analytics의 Event Hubs 출력

Azure Event Hubs 서비스는 확장성이 뛰어난 게시-구독 이벤트 수집기입니다. 초당 수 백만의 이벤트를 수집할 수 있습니다. 이벤트 허브를 출력으로 사용하는 한 가지 경우는 Stream Analytics 작업의 출력이 다른 스트리밍 작업의 입력이 되는 경우입니다. 최대 메시지 크기 및 일괄 처리 크기 최적화에 대한 자세한 내용은 출력 일괄 처리 크기 섹션을 참조하세요.

출력 구성

다음 표는 이벤트 허브에서 출력으로 데이터 스트림을 구성하는 데 필요한 매개 변수를 보여 줍니다.

Property name Description
출력 별칭 쿼리에서 쿼리 출력을 이 이벤트 허브로 보내는 데 사용되는 식별 이름입니다.
이벤트 허브 네임스페이스 메시징 엔터티 세트에 대한 컨테이너입니다. 새 이벤트 허브를 만들 때 이벤트 허브 네임스페이스도 만들었습니다.
이벤트 허브 이름 이벤트 허브 출력의 이름입니다.
이벤트 허브 정책 이름 이벤트 허브의 구성 탭에서 만들 수 있는 공유 액세스 정책입니다. 각 공유 액세스 정책에는 이름, 사용자가 설정한 사용 권한 및 액세스 키가 있습니다.
이벤트 허브 정책 키 이벤트 허브 네임스페이스에 대한 액세스를 인증하는 데 사용되는 공유 액세스 키입니다.
파티션 키 열 선택 사항. 이벤트 허브 출력에 대한 파티션 키가 포함된 열입니다.
이벤트 직렬화 형식 출력 데이터에 대한 직렬화 형식입니다. JSON, CSV 및 Avro를 지원합니다.
인코딩 CSV 및 JSON의 경우 UTF-8이 이번에만 지원되는 인코딩 형식입니다.
구분 기호 CSV 직렬화에만 적용됩니다. Stream Analytics는 CSV 형식에서 데이터를 직렬화하기 위해 다양하고 일반적인 구분 기호를 지원합니다. 지원되는 값은 쉼표, 세미콜론, 공백, 탭 및 세로 막대입니다.
형식 JSON 직렬화에만 적용됩니다. 줄로 구분됨은 각 JSON 개체를 새 줄로 구분된 형식의 출력이 되도록 지정합니다. 줄로 구분됨을 선택하는 경우 JSON에서 한 번에 하나의 개체를 읽습니다. 전체 콘텐츠 자체는 유효한 JSON이 아닙니다. 배열은 JSON 개체 배열 형식의 출력이 되도록 지정합니다.
속성 열 선택 사항. 페이로드 대신 나가는 메시지의 사용자 속성으로 첨부해야 하는 쉼표로 구분된 열입니다. 이 기능에 대한 자세한 내용은 출력에 대한 사용자 지정 메타데이터 속성 섹션에 있습니다.

분할

분할은 파티션 맞춤에 따라 달라집니다. 이벤트 허브 출력의 파티션 키가 업스트림(이전) 쿼리 단계와 동일하게 맞춰지면 기록기 수는 이벤트 허브 출력의 파티션 수와 같습니다. 각 기록기는 EventHubSender 클래스를 사용하여 이벤트를 특정 파티션에 보냅니다. 이벤트 허브 출력의 파티션 키가 업스트림(이전) 쿼리 단계와 동일하게 맞춰지지 않으면 기록기의 수는 이전 단계의 파티션 수와 같습니다. 각 기록기는 EventHubClientSendBatchAsync 클래스를 사용하여 이벤트를 모든 출력 파티션에 보냅니다.

출력 일괄 처리 크기

최대 메시지 크기는 256KB 또는 메시지 당 1MB입니다. 자세한 내용은 Event Hubs 제한을 참조하세요. 입/출력 분할이 정렬되지 않은 경우 각 이벤트는 EventData에 개별적으로 압축되어 최대 메시지 크기까지 일괄 처리 방식으로 보내집니다. 사용자 지정 메타데이터 속성이 사용되는 경우에도 마찬가지입니다. 입/출력 분할이 정렬되는 경우 여러 이벤트가 최대 메시지 크기까지 단일 EventData 인스턴스에 압축되어 보내집니다.

출력에 대한 사용자 지정 메타데이터 속성

쿼리 열을 사용자 속성으로 나가는 메시지에 첨부할 수 있습니다. 이러한 열은 페이로드로 이동하지 않습니다. 속성은 출력 메시지에서 사전 형식으로 제공됩니다. 는 열 이름이고 은 속성 사전의 열 값입니다. 레코드 및 배열을 제외한 모든 Stream Analytics 데이터 형식이 지원됩니다.

다음 예제에서는 DeviceId 필드와 DeviceStatus 필드가 메타데이터에 추가됩니다.

  1. 다음 쿼리를 사용합니다.

    select *, DeviceId, DeviceStatus from iotHubInput
    
  2. 출력에서 DeviceId,DeviceStatus를 속성 열로 구성합니다.

    Property columns

다음 이미지는 Service Bus Explorer를 사용하여 EventHub에서 검사한 예상 출력 메시지 속성입니다.

Event custom properties

정확히 한 번만 전송

기본적으로 Event Hub 출력에서 정확히 한 번만 전송이 지원됩니다. 입력에 관계없이 Stream Analytics는 Event Hub 출력에서 데이터가 손실되거나 중복되지 않도록 하며 마지막 출력 시간에서 사용자가 시작한 다시 시작 시 중복이 발생하지 않도록 합니다. 이렇게 하면 중복 제거 논리를 모니터링, 구현, 문제 해결할 필요가 없기 때문에 스트리밍 파이프라인을 크게 단순화합니다.

다음 단계