我正在尝试在apache spark中实现scala中的top-k。我知道火花有一个顶级的动作。但是,top()使用reduce()。相反,我想使用treeReduce()。我遇到的主要问题是我不能使用我的Spark应用程序中top()动作中使用的这两行代码。
val queue = new BoundedPriorityQueue[T](num)(ord.reverse)
queue ++= util.collection.Utils.takeOrdered(items, num)(ord)
这些都是私密的。我知道我可以在Scala中使用PriorityQueue
而不是BoundedPriorityQueue
。 Scala中有takeOrdered
的替代方法吗?
答案 0 :(得分:0)
由于(根据评论),这是一个研究项目,您可以添加自己的MyBoundedPriorityQueue,它扩展BoundedPriorirtyQueue并在您自己的代码中公开org.apache.spark中的API。这不太可能在Spark的版本之间起作用,但如果仅仅用于研究,那应该可以解决问题。祝你好运,我希望你用你的发现更新我们:)