2016-07-13 9 views
0

У меня есть сбор данных, который находится в формате xml. Что-то похожееВ Azure Eventhub, как отправлять входящие данные в базу данных sql

<OLDI_MODULE xmlns=""> 
<StStoHMI_IBE> 
<PRack>0</PRack> 
<PRackSlotNo>0</PRackSlotNo> 
<RChNo>0</RChNo> 
<RChSlotNo>0</RChSlotNo> 

Данные, данные которой отправляется Azure Eventhub. Я хотел отправить эти данные в базу данных SQL. Я создал поток в Azure Stream Analytics, который использует этот вход и помещает его в базу данных SQL. Но когда входной формат запрашивается для входного потока, есть только JSON, CVS и Avro. Какой из этих форматов я могу использовать? Или какую из лазурных служб следует использовать для переноса данных из Eventhub в базу данных sql?

ответ

0

К самым простым вариантом является использование Azure поток Аналитика, как вы намеревались сделать. Но да, вам нужно будет преобразовать xml в json или другой поддерживаемый формат, прежде чем вы сможете использовать данные.

Другие варианты более сложны, требуют некоторого кода и способа размещения кода (например, с использованием рабочей роли или веб-задания), но при этом обеспечивают максимальную гибкость. Этот параметр должен использовать EventProcessor для чтения данных из концентратора событий и поместить его в базу данных.

См. https://azure.microsoft.com/en-us/documentation/articles/event-hubs-csharp-ephcs-getstarted/, как установить это.

Основная работа выполнена в методе Task IEventProcessor.ProcessEventsAsync(PartitionContext context, IEnumerable messages). На основании этого примера это будет примерно такое:

async Task IEventProcessor.ProcessEventsAsync(PartitionContext context, IEnumerable<EventData> messages) 
{ 
    foreach (EventData eventData in messages) 
    { 
     string xmlData = Encoding.UTF8.GetString(eventData.GetBytes()); 

     // Parse the xml and store the data in db using Ado.Net or whatever you're comfortable with 
    } 

    //Call checkpoint every 5 minutes, so that worker can resume processing from 5 minutes back if it restarts. 
    if (this.checkpointStopWatch.Elapsed > TimeSpan.FromMinutes(5)) 
    { 
     await context.CheckpointAsync(); 
     this.checkpointStopWatch.Restart(); 
    } 
} 
0

JSON был бы хорошим форматом данных, который будет использоваться в Azure Event Hub. После получения данных в Azure Event Hub. Вы можете использовать Azure Stream Analytics для перемещения данных SQL DB.

Azure Stream Analytics состоит из трех частей: ввода, запроса и вывода. Если вход является концентратором событий, вывод - это SQL DB. Запрос должен быть написан вами для выбора желаемых полей и вывода его.

Заканчивать статью ниже:

https://azure.microsoft.com/en-us/documentation/articles/stream-analytics-define-outputs/

поток Analytics будет Azure ресурс, который вы должны смотреть в для перемещения данных из Event Hub

+0

Мои данные находятся на виртуальной машине в облаке. Аналитика Azure Stream переносит ее только на лазурный SQLdb, а не на виртуальную машину в облаке. – Aparna