簡體   English   中英

可以使用Apache Storm來處理具有動態屬性集的元組嗎?

[英]Can Apache Storm be used to process tuples with a dynamic set of properties?

我目前正在評估Apache Storm,以處理來自多個數據源的異構數據。 雖然所有數據可能都有一些共有的屬性(即“類型”屬性),但我希望能夠有許多不同的元組“類”,並且還能夠以最小的拓撲更改來處理新的數據類型。 舉例說明這些數據類型可能是什么樣的:

{type=LogTransaction,timestamp=...,user=...,duration=...}
{type=LogEvent,timestamp=...,user=...,message=...}

“風暴”頁面上的示例主要處理簡單的元組,這些元組事先進行了明確定義,以便噴口/螺栓可以靜態聲明輸出字段。

我最初的想法是聲明類型並將所有其他屬性存儲在Map<String,Object> ,然后可以聲明該屬性:

public void declareOutputFields(OutputFieldsDeclarer ofd) {
    ofd.declare(new Fields("type", "attributes"));
}

但是,我相信那時Storm的許多更高級的功能將無法正常工作。 例如,據我了解,我不再可以使用Trident對任何屬性執行groupBy

有沒有更好的方法來處理我在Apache Storm中丟失的此類數據? 我也發現這個帖子描述了類似的問題,但我想避免創建一個Java類為每個數據類型。

您可以使用自己的自定義字段,只要該字段是可序列化的,它將在風暴中與多個主管一起正常工作。

因為Storm是一種分布式數據處理工具,並且當存在多個主管時,基於分組,某些螺栓會將字段發射到在不同主管上運行的螺栓。 在這種情況下,輸出字段將被序列化並通過網絡發送。 該序列化可以是常規的Java序列化或Kryo序列化(以避免網絡延遲)。

因此,如果您的jvm無法序列化您的輸出字段,則可能會遇到異常。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM