다음을 통해 공유


Event Hub 데이터 연결(미리 보기)

Azure Event Hubs는 빅 데이터 스트리밍 플랫폼 및 이벤트 수집 서비스입니다. Azure Synapse Data Explorer는 고객 관리형 Event Hub에서 지속적인 수집을 제공합니다.

Event Hub 수집 파이프라인은 여러 단계로 이벤트를 Azure Synapse Data Explorer로 전송합니다. 먼저 Azure Portal에서 Event Hub를 만듭니다. 그런 다음 Azure Synapse Data Explorer에서 특정 형식의 데이터가 지정된 수집 속성을 사용하여 수집될 대상 테이블을 만듭니다. Event Hub 연결에서 이벤트 라우팅을 알아야 합니다. 데이터는 이벤트 시스템 속성 매핑에 따라 선택한 속성에 포함됩니다. Event Hub에 대한 연결을 생성하여 Event Hub를 생성하고 이벤트로 보냅니다. 이 프로세스는 Azure Portal을 통해 C# 또는 Python을 사용하여 프로그래밍 방식으로 관리하거나 Azure Resource Manager 템플릿을 사용하여 관리할 수 있습니다.

Azure Synapse Data Explorer의 데이터 수집에 대한 일반적인 정보는 Azure Synapse Data Explorer 데이터 수집 개요를 참조하세요.

데이터 형식

  • 데이터는 EventData 개체 형식으로 Event Hub에서 읽습니다.

  • 지원되는 형식을 참조하세요.

    참고 항목

    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 Hub 연결을 설정할 때 대상 테이블 속성(테이블 이름, 데이터 서식, 압축 및 매핑)을 지정합니다. 데이터의 기본 라우팅을 static routing이라고도 합니다. 이벤트 속성을 사용하여 각 이벤트에 대한 대상 테이블 속성을 지정할 수도 있습니다. 연결은 이벤트의 정적 속성을 재정의하여 EventData.Properties에 지정된 대로 데이터를 동적으로 라우팅합니다.

다음 예제에서는 Event Hub 세부 정보를 설정하고 날씨 메트릭 데이터를 테이블 WeatherMetrics에 보냅니다. 데이터는 json 형식입니다. mapping1은 테이블 WeatherMetrics에 미리 정의되어 있습니다.

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 Hub 서비스에서 설정한 속성을 저장합니다. Azure Synapse Data Explorer Event Hub 연결은 선택한 속성을 테이블의 데이터 랜딩에 포함합니다.

참고 항목

  • 시스템 속성은 json 및 테이블 형식(csv, tsv 등)에 대해 지원되며 압축된 데이터에서는 지원되지 않습니다. 지원되지 않는 형식을 사용하는 경우 데이터는 계속 수집되지만, 속성은 무시됩니다.
  • 테이블 형식 데이터의 경우 시스템 속성은 단일 레코드 이벤트 메시지에 대해서만 지원됩니다.
  • JSON 데이터의 경우 시스템 속성은 여러 레코드 이벤트 메시지에 대해서도 지원됩니다. 이러한 경우 시스템 속성은 이벤트 메시지의 첫 번째 레코드에만 추가됩니다.
  • csv 매핑의 경우 속성은 시스템 속성 테이블에 나열된 순서대로 레코드 시작 부분에 추가됩니다.
  • json 매핑의 경우 속성은 시스템 속성 테이블의 속성 이름에 따라 추가됩니다.

시스템 속성

Event Hub는 다음 시스템 속성을 노출합니다.

속성 데이터 형식 Description
x-opt-enqueued-time datetime 이벤트를 큐에 넣은 UTC 시간
x-opt-sequence-number long Event Hub의 파티션 스트림 내에 있는 이벤트의 논리적 시퀀스 번호
x-opt-offset string Event Hub 파티션 스트림의 데이터 오프셋입니다. 오프셋 식별자는 Event Hub 스트림의 파티션 내에서 고유합니다.
x-opt-publisher string 게시자 엔드포인트에 메시지를 보낸 경우 게시자 이름
x-opt-partition-key string 이벤트를 저장한 해당 파티션의 파티션 키

테이블의 데이터 원본 섹션에서 이벤트 시스템 속성을 선택한 경우 테이블 스키마 및 매핑에 속성을 포함해야 합니다.

스키마 매핑 예제

테이블 스키마 매핑 예제

데이터에 세 개의 열(Timespan, Metric, Value)이 포함되고 포함된 속성이 x-opt-enqueued-timex-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"}}'
    ']'

이벤트 허브 연결

참고 항목

최상의 성능을 위해 Azure Synapse Data Explorer 클러스터와 동일한 지역에 모든 리소스를 만듭니다.

Event Hub 만들기

Event Hub를 만듭니다(아직 없는 경우). Event Hub에 대한 연결은 Azure Portal을 통해 C# 또는 Python을 사용하여 프로그래밍 방식으로 관리하거나 Azure Resource Manager 템플릿을 사용하여 관리할 수 있습니다.

참고 항목

  • 파티션 수는 변경할 수 없으므로 파티션 수를 설정할 때 장기적인 규모를 고려해야 합니다.
  • 소비자 그룹은 소비자별로 고유해야 합니다. Azure Synapse Data Explorer 연결 전용 소비자 그룹을 만듭니다.

이벤트 보내기

데이터를 생성하고 Event Hub로 보내는 샘플 앱을 참조하세요.

샘플 데이터를 생성하는 방법의 예는 Event Hub에서 Azure Synapse Data Explorer로 데이터 수집을 참조하세요.

지리적 재해 복구 솔루션 설정

Event Hub는 지리적 재해 복구 솔루션을 제공합니다. Azure Synapse Data Explorer는 Alias Event Hub 네임스페이스를 지원하지 않습니다. 솔루션에서 지리적 재해 복구를 구현하려면 두 개의 Event Hub 데이터 연결을 만듭니다. 하나는 기본 네임스페이스용이고 다른 하나는 보조 네임스페이스용입니다. Azure Synapse Data Explorer는 두 Event Hub 연결을 모두 수신합니다.

참고 항목

기본 네임스페이스에서 보조 네임스페이스로 장애 조치(failover)를 구현하는 것은 사용자의 책임입니다.

다음 단계