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 클래스를 사용하여 이벤트를 특정 파티션에 보냅니다. 이벤트 허브 출력의 파티션 키가 업스트림(이전) 쿼리 단계와 동일하게 맞춰지지 않으면 기록기의 수는 이전 단계의 파티션 수와 같습니다. 각 기록기는 EventHubClient의 SendBatchAsync 클래스를 사용하여 이벤트를 모든 출력 파티션에 보냅니다.
출력 일괄 처리 크기
최대 메시지 크기는 256KB 또는 메시지 당 1MB입니다. 자세한 내용은 Event Hubs 제한을 참조하세요. 입/출력 분할이 정렬되지 않은 경우 각 이벤트는 EventData
에 개별적으로 압축되어 최대 메시지 크기까지 일괄 처리 방식으로 보내집니다. 사용자 지정 메타데이터 속성이 사용되는 경우에도 마찬가지입니다. 입/출력 분할이 정렬되는 경우 여러 이벤트가 최대 메시지 크기까지 단일 EventData
인스턴스에 압축되어 보내집니다.
출력에 대한 사용자 지정 메타데이터 속성
쿼리 열을 사용자 속성으로 나가는 메시지에 첨부할 수 있습니다. 이러한 열은 페이로드로 이동하지 않습니다. 속성은 출력 메시지에서 사전 형식으로 제공됩니다. 키는 열 이름이고 값은 속성 사전의 열 값입니다. 레코드 및 배열을 제외한 모든 Stream Analytics 데이터 형식이 지원됩니다.
다음 예제에서는 DeviceId
필드와 DeviceStatus
필드가 메타데이터에 추가됩니다.
다음 쿼리를 사용합니다.
select *, DeviceId, DeviceStatus from iotHubInput
출력에서
DeviceId,DeviceStatus
를 속성 열로 구성합니다.
다음 이미지는 Service Bus Explorer를 사용하여 EventHub에서 검사한 예상 출력 메시지 속성입니다.
정확히 한 번만 전송
기본적으로 Event Hub 출력에서 정확히 한 번만 전송이 지원됩니다. 입력에 관계없이 Stream Analytics는 Event Hub 출력에서 데이터가 손실되거나 중복되지 않도록 하며 마지막 출력 시간에서 사용자가 시작한 다시 시작 시 중복이 발생하지 않도록 합니다. 이렇게 하면 중복 제거 논리를 모니터링, 구현, 문제 해결할 필요가 없기 때문에 스트리밍 파이프라인을 크게 단순화합니다.