我試圖對我的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