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関数はロングタイプのデータを返すので、bool型が必要です。例外を取得する方法はありません。 一部のデータリストはうまく機能しますが、他のデータ(特に1GB以上の大きなデータ)はこのエラーでは機能しません。
Comparison method violates its general contract
任意のアイデアですか?
'あなたの値の種類何myList'? – eliasah
RDD [行]であり、.toListメソッドでリストを作成しました –
RDD [行]を.toListでリストに変換することはできません! – eliasah