以下是数据流程中的请求,AlertRDD用于生成唯一的警报计数,而不是一天的唯一警报计数。 所以我写下面的方法包括其中两个,
implicit class RDDOps(val rdd: RDD[(String, String)]) {
def addDistinctRDD() = {
rdd.distinct().map{
case (elem1, elem2) =>
(elem1, elem2, "AlertUniqueUsers")
} ++ rdd.map{
case (elem1, elem2) =>
(elem1, elem2, "Alerts")
}
}
}
当我运行AlertRDD.addDistinctRDD.save(//path)
时,程序将永远不会停止,但如果以AlertRDD.cache.addDistinctRDD.save(//path)
运行它,则效果很好。
有人知道原因吗?
更新
看起来没人能回答我的问题,可能我的问题还不太清楚。
为什么我一起添加唯一 AlertRDD和非唯一 AlertRDD?
因为两个RDD的后续过程是相同的,所以下面的内容摘录代码:
.map((_, 1))
.reduceByKey(_ + _)
.map()
....
.save($path)
如果我的解决方案不是好的解决方案,那么有人可以提出更好的解决方案吗?