我试图对我的List [Row]数据集进行排序,这里是我如何做的。比较方法违反了Spark中的一般合同
def getDiffMinute(ts1:Timestamp, ts2:Timestamp) : Long = {
if(ts1==null || ts2==null) 0
else (ts1.getTime - ts2.getTime)/60000
}
myList.sortWith((r1: Row, r2: Row) =>
MYUtils.getDiffMinute(r1.getAs[Timestamp]("time"), r2.getAs[Timestamp]("time")) < 0
)
由于getDiffMinute函数返回Long类型的数据和wort对于需要bool类型,没有办法得到异常。 某些数据列表工作得很好,但其他数据(特别是大于1GB的大数据)不能用于此错误。
Comparison method violates its general contract
任何想法?
什么是你的价值'myList'的类型? – eliasah
这是RDD [行],并使用.toList方法 –
制作了列表,您无法使用.toList将RDD [行]转换为列表! – eliasah