Java Scala如何将“无”排序到底部(如果存在)并选择每组中的第一行?
我按照第一个元素进行分组,该元素产生RDD[String,Iterable[String,String,Option[Node]] 我想按选项[Node]进行排序,如果没有,则应在每个组的底部排序,并为每个组选择第一行Java Scala如何将“无”排序到底部(如果存在)并选择每组中的第一行?,java,scala,sorting,apache-spark,group-by,Java,Scala,Sorting,Apache Spark,Group By,我按照第一个元素进行分组,该元素产生RDD[String,Iterable[String,String,Option[Node]] 我想按选项[Node]进行排序,如果没有,则应在每个组的底部排序,并为每个组选择第一行 I have [(x,compactBuffer((x,y,z),(x,y,None),(x,y,p))], [(a,compactBuffer((a,b,c),(a,b,d))], [(s,compactBuffer((s,t,None),(s,t,None),(s,t,u
I have
[(x,compactBuffer((x,y,z),(x,y,None),(x,y,p))],
[(a,compactBuffer((a,b,c),(a,b,d))],
[(s,compactBuffer((s,t,None),(s,t,None),(s,t,u))],
[(l,compactBuffer((l,m,None)]
预期产量
[(x,compactBuffer((x,y,z))],
[(a,compactBuffer((a,b,c))],
[(s,compactBuffer((s,t,u))], // select (s,t,u) since the first two rows
have None
[(l,compactBuffer((l,m,None)]
您可以尝试在groupBy之后附加mapValue:
rdd.groupBy([Your Key]).mapValues(_.sortBy(_._3).reverse.take(1)).values
尽管有人说你不能比较两个选项,但是上面的代码对我来说是有效的…,或者你可以创建一个a:Ordering=>Ordered[a]的转换,那么你的选项可以直接进行比较。实现它的具体问题是什么?第一个输出元素不应该是[x,compactBufferx,y,p]?