Spark自定義排序

2021-10-20 16:26:44 字數 642 閱讀 2628

spark支援我們自定義,只需要繼承相應的類就可以了,我在下面準備了乙個用身高和年齡做二次排序的例子,希望可以幫到大家

首先寫乙個排序類

//名字  年齡 身高

class people(

val name:

string

,val age:

int,

val hight:

int)

extends ordered[people]

with serializable

else

}override

def tostring:

string

= s"名字:$name,年齡:$age,身高:$hight"

}

之後在使用的時候,用people類包裝資料,呼叫rdd集sortby就可以了,如果你的資料是二元組,且people在key上,那麼也可以呼叫sortbykey

不過要注意sortbykey只能用在key-value資料集上,且使用的是key的資料類中的排序方法,而sortby有第二個引數,本身是在一級排序時控制正反排序的,所以你如果用sortby,那麼就不要在你已經寫了自定義排序類的情況下傳遞第二個引數了,不然你會發現結果有問題,直接用下劃線代替引數就可以

Spark自定義排序

在這之前,我們先準備一些資料,使用rdd存放 獲得sparkcontext val conf sparkconf newsparkconf setmaster local 2 val sc newsparkcontext conf val rdd sc.parallelize list 公尺家雷射投...

Spark 自定義排序

考察spark自定義排序 package com.rz.spark.base import org.apache.spark.rdd.rdd import org.apache.spark.自定義排序 object customsort1 不滿足要求 tp.3,false 將rdd裡面封裝在user...

spark兩種自定義排序方式

一 目標物件新增隱式轉換函式的方式實現自定義排序 object mysortelse 隱式轉換函式實現自定義排序 object customsort1 學生類 case class student name string,age int,score int 二 目標物件實現ordered特質的方式實...