![](/img/trans.png)
[英]reduceByKey/aggregateByKey alternative for a DStream[Class] Spark Streaming
[英]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.