RDD.distinct()++ RDD将使进程不会停止

时间:2016-02-25 08:58:17

标签: apache-spark rdd

以下是数据流程中的请求,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)

如果我的解决方案不是好的解决方案,那么有人可以提出更好的解决方案吗?

0 个答案:

没有答案