簡體   English   中英

Spark Streaming-DStream內部的Map的reduceByKey

[英]Spark Streaming - reduceByKey for a Map inside DStream

我如何利用Spark / Spark Streaming中的reduceByKey為DStream內的普通Scala映射提供服務?

我有一個DStream[(String, Array[(String, List)])] ,在這里我想將reduceByKey函數應用於內部Array[(String, List)] (將所有列表連接在一起)

我可以通過將外部RDD轉換為普通Array來執行此操作(以避免SparkContext對象上的序列化錯誤),

然后運行一個foreach並將sc.parallelize()應用於內部Array[(String, List)]

但是由於DStream沒有直接轉換為普通數組,因此我無法將sc.parallelize()應用於內部組件,因此也沒有reduceByKey函數。

我是Spark和Spark Streaming的新手(實際上是整個map-reduce概念),這可能不是正確的方法,因此如果有人可以建議更好的做法,請這樣做。

這是一個老問題,因此希望您能解決這個問題。但是為了能夠在DStream上執行reduceByKey ...操作,必須首先導入StreamingContext:

import org.apache.spark.streaming.StreamingContext._

這提供了擴展DStream的隱式方法。 完成此操作后,您不僅可以執行stock reduceByKey,還可以使用時間分段功能,例如:

reduceByKeyAndWindow((a: List, b: List) => (a ::: b), Seconds(30), Seconds(30))

如果要在滑動窗口內進行聚合,這些功能將非常有用。 希望有幫助!

暫無
暫無

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

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