背景: 我使用Spark Streaming從Kafka流式處理以逗號分隔鍵值對形式出現的事件 以下是事件流入我的火花應用程序。Spark Streaming - 根據按鍵分組的鍵值對計算統計信息
Key1=Value1, Key2=Value2, Key3=Value3, Key4=Value4,responseTime=200
Key1=Value5, Key2=Value6, Key3=Value7, Key4=Value8,responseTime=150
Key1=Value9, Key2=Value10, Key3=Value11, Key4=Value12,responseTime=100
輸出:
我想要計算不同的度量(平均,計數等)由不同的密鑰流中分組的對於給定批次的時間間隔例如
- 通過密鑰1,密鑰2(RESPONSETIME是在每一個事件的關鍵之一)
- 計數通過密鑰1,密鑰2
我嘗試到目前爲止平均RESPONSETIME:
val stream = KafkaUtils
.createDirectStream[String, String, StringDecoder, StringDecoder](
ssc, kafkaParams, topicsSet)
val pStream = stream.persist()
val events: DStream[String] = pStream.flatMap(_._2.split(","))
val pairs= events.map(data => data.split("=")).map(array => (array(0), array(1)))
// pairs results in tuples of (Key1, Value1), (Key2, Value2) and so on.
更新 - 03/04 鑰匙Key1,Key2 ...可能在傳入流中亂序出現。
欣賞您的輸入/提示。
您能否提供預期的輸出類型和您迄今爲止的嘗試?這不是你想要的東西。 – zero323
@ zero323 - 好吧,我用期望的輸出類型和我迄今爲止的嘗試更新了我的問題。如果我能夠解決這個問題,我會發布答案。 – codehammer
謝謝。我對這一點進行了格式化。 – zero323