Event Hubs 데이터 연결(미리 보기)
Azure Event Hubs는 빅 데이터 스트리밍 플랫폼 및 이벤트 수집 서비스입니다. Azure Synapse Data Explorer는 고객 관리형 Event Hub에서 지속적인 수집을 제공합니다.
Event Hubs 수집 파이프라인은 여러 단계에서 Azure Synapse Data Explorer로 이벤트를 전송합니다. 먼저 Azure Portal에서 Event Hubs를 만듭니다. 그런 다음 Azure Synapse Data Explorer에서 특정 형식의 데이터가 지정된 수집 속성을 사용하여 수집될 대상 테이블을 만듭니다. Event Hubs 연결에서 이벤트 라우팅을 알아야 합니다. 데이터는 이벤트 시스템 속성 매핑에 따라 선택한 속성에 포함됩니다. Event Hubs에 대한 연결을 만들어 Event Hubs를 만들고 이벤트를 보냅니다. 이 프로세스는 Azure Portal을 통해 C# 또는 Python을 사용하여 프로그래밍 방식으로 관리하거나 Azure Resource Manager 템플릿을 사용하여 관리할 수 있습니다.
Azure Synapse Data Explorer의 데이터 수집에 대한 일반적인 정보는 Azure Synapse Data Explorer 데이터 수집 개요를 참조하세요.
데이터 형식
Event Hubs에서 EventData 개체의 형태로 데이터를 읽습니다.
지원되는 형식을 참조하세요.
참고 항목
Event Hub는 .raw 형식을 지원하지 않습니다.
GZip
압축 알고리즘을 사용하여 데이터를 압축할 수 있습니다. 수집 속성에서Compression
을 지정합니다.- 압축 형식(Avro, Parquet, ORC)에 대해서는 데이터 압축이 지원되지 않습니다.
- 사용자 지정 인코딩 및 포함된 시스템 속성은 압축된 데이터에서 지원되지 않습니다.
수집 속성
수집 프로세스는 수집 속성을 통해 데이터를 라우팅할 위치와 처리 방법을 알게 됩니다. EventData.Properties를 사용하여 이벤트 수집의 수집 속성을 지정할 수 있습니다. 다음 속성을 설정할 수 있습니다.
속성 | 설명 |
---|---|
테이블 | 기존 대상 테이블의 이름(대/소문자 구분)입니다. Data Connection 창에 설정된 Table 을 재정의합니다. |
형식 | 데이터 형식. Data Connection 창에 설정된 Data format 을 재정의합니다. |
IngestionMappingReference | 사용할 기존 수집 매핑의 이름입니다. Data Connection 창에 설정된 Column mapping 을 재정의합니다. |
압축 | 데이터 압축, None (기본값) 또는 GZip 압축. |
Encoding | 데이터 인코딩, 기본값은 UTF8입니다. .NET 지원 인코딩 중 하나일 수 있습니다. |
태그들 | 수집된 데이터와 연결할 JSON 배열 문자열 형식의 태그 목록입니다. 태그를 사용할 때 성능에 영향이 있습니다. |
참고 항목
데이터 연결을 만든 후에 큐에 넣은 이벤트만 수집됩니다.
이벤트 라우팅
Azure Synapse Data Explorer 클러스터에 Event Hubs 연결을 설정할 때 대상 테이블 속성(테이블 이름, 데이터 형식, 압축 및 매핑)을 지정합니다. 데이터의 기본 라우팅을 static routing
이라고도 합니다.
이벤트 속성을 사용하여 각 이벤트에 대한 대상 테이블 속성을 지정할 수도 있습니다. 연결은 이벤트의 정적 속성을 재정의하여 EventData.Properties에 지정된 대로 데이터를 동적으로 라우팅합니다.
다음 예제에서는 Event Hubs 세부 정보를 설정하고 날씨 메트릭 데이터를 테이블 WeatherMetrics
로 보냅니다.
데이터는 json
형식입니다. mapping1
은 테이블 WeatherMetrics
에 미리 정의되어 있습니다.
Warning
이 예제에서는 예제의 단순성을 위해 연결 문자열 인증을 사용하여 Event Hubs에 연결합니다. 그러나 스크립트에 연결 문자열 하드 코딩하려면 애플리케이션에 대한 신뢰 수준이 매우 높고 보안 위험이 수반됩니다.
장기적이고 안전한 솔루션의 경우 다음 옵션 중 하나를 사용합니다.
- 암호 없는 인증
- Azure Key Vault에 연결 문자열 저장하고 이 메서드를 사용하여 코드에서 검색합니다.
var eventHubNamespaceConnectionString=<connection_string>;
var eventHubName=<event_hub>;
// Create the data
var metric = new Metric { Timestamp = DateTime.UtcNow, MetricName = "Temperature", Value = 32 };
var data = JsonConvert.SerializeObject(metric);
// Create the event and add optional "dynamic routing" properties
var eventData = new EventData(Encoding.UTF8.GetBytes(data));
eventData.Properties.Add("Table", "WeatherMetrics");
eventData.Properties.Add("Format", "json");
eventData.Properties.Add("IngestionMappingReference", "mapping1");
eventData.Properties.Add("Tags", "['mydatatag']");
// Send events
var eventHubClient = EventHubClient.CreateFromConnectionString(eventHubNamespaceConnectionString, eventHubName);
eventHubClient.Send(eventData);
eventHubClient.Close();
이벤트 시스템 속성 매핑
시스템 속성은 Event Hubs 서비스에서 설정한 속성을 저장합니다. 이때 이벤트가 큐에 저장됩니다. Azure Synapse Data Explorer Event Hubs 연결은 선택한 속성을 테이블의 데이터 방문에 포함합니다.
참고 항목
- 시스템 속성은
json
및 테이블 형식(csv
,tsv
등)에 대해 지원되며 압축된 데이터에서는 지원되지 않습니다. 지원되지 않는 형식을 사용하는 경우 데이터는 계속 수집되지만, 속성은 무시됩니다. - 테이블 형식 데이터의 경우 시스템 속성은 단일 레코드 이벤트 메시지에 대해서만 지원됩니다.
- JSON 데이터의 경우 시스템 속성은 여러 레코드 이벤트 메시지에 대해서도 지원됩니다. 이러한 경우 시스템 속성은 이벤트 메시지의 첫 번째 레코드에만 추가됩니다.
csv
매핑의 경우 속성은 시스템 속성 테이블에 나열된 순서대로 레코드 시작 부분에 추가됩니다.json
매핑의 경우 속성은 시스템 속성 테이블의 속성 이름에 따라 추가됩니다.
시스템 속성
Event Hubs는 다음 시스템 속성을 노출합니다.
속성 | 데이터 형식 | Description |
---|---|---|
x-opt-enqueued-time | datetime | 이벤트를 큐에 넣은 UTC 시간 |
x-opt-sequence-number | long | Event Hubs의 파티션 스트림 내에 있는 이벤트의 논리적 시퀀스 번호입니다. |
x-opt-offset | string | Event Hubs 파티션 스트림에서 이벤트의 오프셋입니다. 오프셋 식별자는 Event Hubs 스트림의 파티션 내에서 고유합니다. |
x-opt-publisher | string | 게시자 엔드포인트에 메시지를 보낸 경우 게시자 이름 |
x-opt-partition-key | string | 이벤트를 저장한 해당 파티션의 파티션 키 |
테이블의 데이터 원본 섹션에서 이벤트 시스템 속성을 선택한 경우 테이블 스키마 및 매핑에 속성을 포함해야 합니다.
스키마 매핑 예제
테이블 스키마 매핑 예제
데이터에 세 개의 열(Timespan
, Metric
, Value
)이 포함되고 포함된 속성이 x-opt-enqueued-time
와 x-opt-offset
인 경우 다음 명령을 사용하여 테이블 스키마를 만들거나 변경합니다.
.create-merge table TestTable (TimeStamp: datetime, Metric: string, Value: int, EventHubEnqueuedTime:datetime, EventHubOffset:string)
CSV 매핑 예제
다음 명령을 실행하여 레코드의 시작 부분에 데이터를 추가합니다. 서수 값을 기록해 둡니다.
.create table TestTable ingestion csv mapping "CsvMapping1"
'['
' { "column" : "Timespan", "Properties":{"Ordinal":"2"}},'
' { "column" : "Metric", "Properties":{"Ordinal":"3"}},'
' { "column" : "Value", "Properties":{"Ordinal":"4"}},'
' { "column" : "EventHubEnqueuedTime", "Properties":{"Ordinal":"0"}},'
' { "column" : "EventHubOffset", "Properties":{"Ordinal":"1"}}'
']'
JSON 매핑 예제
시스템 속성 매핑을 사용하여 데이터를 추가합니다. 다음 명령을 실행합니다.
.create table TestTable ingestion json mapping "JsonMapping1"
'['
' { "column" : "Timespan", "Properties":{"Path":"$.timestamp"}},'
' { "column" : "Metric", "Properties":{"Path":"$.metric"}},'
' { "column" : "Value", "Properties":{"Path":"$.value"}},'
' { "column" : "EventHubEnqueuedTime", "Properties":{"Path":"$.x-opt-enqueued-time"}},'
' { "column" : "EventHubOffset", "Properties":{"Path":"$.x-opt-offset"}}'
']'
Event Hubs 연결
참고 항목
최상의 성능을 위해 Azure Synapse Data Explorer 클러스터와 동일한 지역에 모든 리소스를 만듭니다.
Event Hubs 만들기
아직 없는 경우 Event Hubs를 만듭니다. Event Hubs에 대한 연결은 Azure Portal, C# 또는 Python을 사용하여 프로그래밍 방식으로 또는 Azure Resource Manager 템플릿을 통해 관리할 수 있습니다.
참고 항목
- 파티션 수는 변경할 수 없으므로 파티션 수를 설정할 때 장기적인 규모를 고려해야 합니다.
- 소비자 그룹은 소비자별로 고유해야 합니다. Azure Synapse Data Explorer 연결 전용 소비자 그룹을 만듭니다.
이벤트 보내기
데이터를 생성하고 Event Hubs로 보내는 샘플 앱을 참조하세요.
샘플 데이터를 생성하는 방법의 예제는 Event Hubs에서 Azure Synapse Data Explorer로 데이터 수집을 참조 하세요.
지리적 재해 복구 솔루션 설정
Event Hubs는 지역 재해 복구 솔루션을 제공합니다.
Azure Synapse Data Explorer는 Event Hubs 네임스페이스를 지원하지 Alias
않습니다. 솔루션에서 지역 재해 복구를 구현하려면 주 네임스페이스와 보조 네임스페이스에 대한 두 개의 Event Hubs 데이터 연결을 만듭니다. Azure Synapse Data Explorer는 두 Event Hubs 연결을 모두 수신 대기합니다.
참고 항목
기본 네임스페이스에서 보조 네임스페이스로 장애 조치(failover)를 구현하는 것은 사용자의 책임입니다.