2016-07-13 37 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流分析中創建了一個流,將其輸入到SQL數據庫中。但是當輸入格式被要求輸入流時,只有JSON,CVS和Avro。我可以使用哪些格式?或者我應該使用哪種Azure服務將數據從Eventhub移動到sql數據庫?

回答

0

目前最簡單的選擇是使用Azure的流按照您的計劃進行分析。但是,是的,您必須先將xml轉換爲json或其他支持的格式,然後才能使用數據。

其他選項更復雜,需要一些代碼和一種方法來託管代碼(例如使用工作者角色或Web作業),但卻提供了最大的靈活性。該選項是使用EventProcessor從Event Hub讀取數據並將其放入數據庫中。

請參閱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流分析來移動數據SQL數據庫。

Azure Stream Analytics由三部分組成:輸入,查詢和輸出。在輸入是事件中心的情況下,輸出是SQL DB。該查詢應該由您編寫,以選擇所需的字段並輸出。

退房下面的文章:

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

的分析數據將Azure的資源,你應該考慮從事件移動數據中心

+0

我的數據庫位於雲中的虛擬機上。 Azure流分析僅將其移至天青SQLdb,而不是位於雲中的虛擬機中。 – Aparna

相關問題