我希望使用Scala中的RDD.max从RDD中获得一个最大值。我的RDD包含一堆具有字段久期 (Long type)的VO。我试过使用以下代码,但它只适用于Int,而不适用于Long (如文档所示)
val vo1 = new MyVO()
vo1.setDuration(1234L)
val vo2 = new MyVO()
vo2.setDuration(123L)
val a = Array(vo1, vo2)
val sc = prepareConfig()
val rdd = sc.parallelize(a)
val maxKey2 = rdd.max()(new Ordering[MyVO]() {
override def compare(x: MyVO,
y: MyVO): Long =
Ordering[Long].compare(x.duration, y.duration)
})
println(maxKey2.duration)我指的是How to find max value in pair RDD?这篇文章。但我不知道怎么处理我的案子。任何帮助都非常感谢
发布于 2016-09-26 16:14:34
该上下文中的结果 of compare始终是一个Int (无论您比较哪种类型,请看一下特质Ordering中compare的定义)。
在比较Long值时,可以将compare函数简化为:
override def compare(x: TransactionSummeryVO, y: TransactionSummeryVO): Int =
x.duration.compareTo(y.duration)https://stackoverflow.com/questions/39707188
复制相似问题