import org.apache.spark.SparkConf
import org.apache.spark.SparkContext
class SortKey(val clickCount: Int, val orderCount: Int, val payCount: Int) extends Ordered[SortKey] with Serializable {
def compare(that: SortKey): Int = {
if(clickCount - that.clickCount != 0) {
clickCount - that.clickCount
} else if(orderCount - that.orderCount != 0) {
orderCount - that.orderCount
} else if(payCount - that.payCount != 0) {
payCount - that.payCount
} else {
0
}
}
}
object SortKeyTest {
def main(args: Array[String]): Unit = {
val conf = new SparkConf().setAppName("SortKeyTest").setMaster("local")
val sc = new SparkContext(conf)
val arr = Array(
Tuple2(new SortKey(30, 35, 40), "1"),
Tuple2(new SortKey(35, 30, 40), "2"),
Tuple2(new SortKey(30, 38, 30), "3")
)
val rdd = sc.parallelize(arr, 1)
val sortedRdd = rdd.sortByKey(false)
for(tuple <- sortedRdd.collect()) {
println(tuple._2)
}
}
}
scala自定义spark的二次排序
于 2022-01-22 21:46:48 首次发布