1、sortBy:
功能:
对RDD中的所有元素
进行整体排序,可以指定排序规则【按照谁排序,升序或者降序】
语法:
def sortBy(self, keyFunc:(T) -> 0, asc:bool,numPartitions) -> RDD
其中:
keyFunc:(T) -> 0:用于指定按照数据中的哪个值进行排序
asc: bool:用于指定升序还是降序,默认是升序
举例:
需求:
按照用户年龄降序排序:
文件内容如下:
laoda,20,male
laoer,22,female
laoliu,28,middle
laosan,24,male
laosi,30,male
laowu,26,female
排序结果如下:
laosi,30,male
laoliu,28,middle
laowu,26,female
laosan,24,male
laoer,22,female
laoda,20,male
代码:
fileRdd = sc.textFile("../../datas/c.txt")
fileRdd.sortBy(lambda line:line.split(",")[1],ascending=False).foreach(lambda line : print(line))
2、sortByKey:
功能:
对RDD中的所有元素按照Key
进行整体排序,可以指定排序规则,只有KV类型的RDD才能调用
语法:
def sortByKey(self, asc, numPartitions) -> RDD[Tuple[K,V]]
举例:
rdd1 = sc.parallelize([("word", 10), ("word", 5), ("hello", 100), ("hello", 20), ("spark", 1)], numSlices=3)
rdd1.sortByKey(ascending=False).foreach(lambda x :print(x))