Partilhar via


Conexão de dados de Hubs de Eventos (Visualização)

Os Hubs de Eventos do Azure são uma plataforma de streaming de big data e um serviço de ingestão de eventos. O Azure Synapse Data Explorer oferece ingestão contínua de Hubs de Eventos gerenciados pelo cliente.

O pipeline de ingestão de Hubs de Eventos transfere eventos para o Azure Synapse Data Explorer em várias etapas. Primeiro, você cria um Hubs de Eventos no portal do Azure. Em seguida, você cria uma tabela de destino no Azure Synapse Data Explorer na qual os dados em um formato específico serão ingeridos usando as propriedades de ingestão fornecidas. A conexão dos Hubs de Eventos precisa saber o roteamento de eventos. Os dados são incorporados com propriedades selecionadas de acordo com o mapeamento de propriedades do sistema de eventos. Crie uma conexão com Hubs de Eventos para criar Hubs de Eventos e enviar eventos. Esse processo pode ser gerenciado por meio do portal do Azure, programaticamente com C# ou Python ou com o modelo do Azure Resource Manager.

Para obter informações gerais sobre a ingestão de dados no Azure Synapse Data Explorer, consulte Visão geral da ingestão de dados do Azure Synapse Data Explorer.

Formato dos dados

  • Os dados são lidos dos Hubs de Eventos na forma de objetos EventData .

  • Consulte os formatos suportados.

    Nota

    O Hub de Eventos não suporta o formato .raw.

  • Os dados podem ser compactados usando o algoritmo de GZip compressão. Especifique Compression as propriedades de ingestão.

    • A compressão de dados não é suportada para formatos comprimidos (Avro, Parquet, ORC).
    • A codificação personalizada e as propriedades do sistema incorporado não são suportadas em dados compactados.

Propriedades de ingestão

As propriedades de ingestão instruem o processo de ingestão, para onde encaminhar os dados e como processá-los. Você pode especificar as propriedades de ingestão dos eventos de ingestão usando EventData.Properties. Você pode definir as seguintes propriedades:

Property Description
Tabela Nome (diferencia maiúsculas de minúsculas) da tabela de destino existente. Substitui o Table Data Connection conjunto no painel.
Formato Formato de dados. Substitui o Data format Data Connection conjunto no painel.
IngestionMappingReference Nome do mapeamento de ingestão existente a ser usado. Substitui o Column mapping Data Connection conjunto no painel.
Compressão Compactação de dados, None (padrão) ou GZip compactação.
Codificação Codificação de dados, o padrão é UTF8. Pode ser qualquer uma das codificações suportadas pelo .NET.
Etiquetas Uma lista de tags para associar aos dados ingeridos, formatada como uma cadeia de caracteres de matriz JSON. Há implicações de desempenho ao usar tags.

Nota

Somente os eventos enfileirados após a criação da conexão de dados são ingeridos.

Roteamento de eventos

Ao configurar uma conexão de Hubs de Eventos com o cluster do Azure Synapse Data Explorer, você especifica as propriedades da tabela de destino (nome da tabela, formato de dados, compactação e mapeamento). O roteamento padrão para seus dados também é conhecido como static routing. Você também pode especificar propriedades da tabela de destino para cada evento, usando propriedades de evento. A conexão roteará dinamicamente os dados conforme especificado em EventData.Properties, substituindo as propriedades estáticas desse evento.

No exemplo a seguir, defina os detalhes dos Hubs de Eventos e envie dados de métricas meteorológicas para a tabela WeatherMetrics. Os dados estão no json formato. mapping1 é pré-definido na tabela WeatherMetrics.

Aviso

Este exemplo usa a autenticação de cadeia de conexão para se conectar a Hubs de Eventos para simplificar o exemplo. No entanto, codificar uma cadeia de conexão em seu script requer um grau muito alto de confiança no aplicativo e acarreta riscos de segurança.

Para soluções seguras e de longo prazo, use uma destas opções:

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();

Mapeamento de propriedades do sistema de eventos

As propriedades do sistema armazenam propriedades definidas pelo serviço Hubs de Eventos, no momento em que o evento é enfileirado. A conexão dos Hubs de Eventos do Azure Synapse Data Explorer incorporará as propriedades selecionadas no destino de dados em sua tabela.

Nota

  • As propriedades do sistema são suportadas para json formatos tabulares (csv, tsv etc.) e não são suportadas em dados compactados. Ao usar um formato sem suporte, os dados ainda serão ingeridos, mas as propriedades serão ignoradas.
  • Para dados tabulares, as propriedades do sistema são suportadas apenas para mensagens de eventos de registro único.
  • Para dados JSON, as propriedades do sistema também são suportadas para mensagens de eventos de vários registros. Nesses casos, as propriedades do sistema são adicionadas somente ao primeiro registro da mensagem de evento.
  • Para csv mapeamento, as propriedades são adicionadas no início do registro na ordem listada na tabela Propriedades do sistema.
  • Para json mapeamento, as propriedades são adicionadas de acordo com os nomes de propriedade na tabela Propriedades do sistema.

Propriedades do sistema

Os Hubs de Eventos expõem as seguintes propriedades do sistema:

Property Tipo de Dados Description
x-opt-enfileirado-tempo datetime Hora UTC em que o evento foi enfileirado
x-opt-seqüência-número long O número de sequência lógica do evento dentro do fluxo de partição dos Hubs de Eventos
x-opt-deslocamento string O deslocamento do evento do fluxo de partição dos Hubs de Eventos. O identificador de deslocamento é exclusivo dentro de uma partição do fluxo de Hubs de Eventos
X-opt-editor string O nome do editor, se a mensagem tiver sido enviada para um ponto de extremidade do editor
chave de partição x-opt string A chave de partição da partição correspondente que armazenou o evento

Se você selecionou Propriedades do sistema de eventos na seção Fonte de Dados da tabela, deverá incluir as propriedades no esquema e mapeamento da tabela.

Exemplos de mapeamento de esquema

Exemplo de mapeamento de esquema de tabela

Se os dados incluírem três colunas (Timespan, , e Value) e as propriedades incluídas forem x-opt-enqueued-time e x-opt-offset, crie ou altere o esquema da tabela Metricusando este comando:

    .create-merge table TestTable (TimeStamp: datetime, Metric: string, Value: int, EventHubEnqueuedTime:datetime, EventHubOffset:string)

Exemplo de mapeamento CSV

Execute os seguintes comandos para adicionar dados ao início do registro. Observe os valores ordinais.

    .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"}}'
    ']'

Exemplo de mapeamento JSON

Os dados são adicionados usando o mapeamento de propriedades do sistema. Execute estes comandos:

    .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"}}'
    ']'

Conexão de Hubs de Eventos

Nota

Para obter o melhor desempenho, crie todos os recursos na mesma região que o cluster do Azure Synapse Data Explorer.

Criar Hubs de Eventos

Se você ainda não tiver um, crie um Hubs de Eventos. A ligação a Hubs de Eventos pode ser gerida através do portal do Azure, programaticamente com C# ou Python ou com o modelo Azure Resource Manager.

Nota

  • A contagem de partições não é alterável, portanto, você deve considerar a escala de longo prazo ao definir a contagem de partições.
  • O grupo de consumidores deve ser único por consumidor. Crie um grupo de consumidores dedicado à conexão do Azure Synapse Data Explorer.

Enviar eventos

Veja o aplicativo de exemplo que gera dados e os envia para um Hubs de Eventos.

Para obter um exemplo de como gerar dados de exemplo, consulte Ingerir dados de Hubs de Eventos no Azure Synapse Data Explorer

Configurar a solução de recuperação de desastres geográficos

Os Hubs de Eventos oferecem uma solução de recuperação de desastres geográficos. O Azure Synapse Data Explorer não oferece suporte a Alias namespaces de Hubs de Eventos. Para implementar a recuperação de desastres geográficos em sua solução, crie duas conexões de dados de Hubs de Eventos: uma para o namespace primário e outra para o namespace secundário. O Azure Synapse Data Explorer ouvirá ambas as conexões de Hubs de Eventos.

Nota

É responsabilidade do usuário implementar um failover do namespace primário para o namespace secundário.

Próximos passos