1)定义一个类SecondarySortKey,实现自定义的用于排序的key 2)将需要进行二次排序的文件加载进来生成(key,value)键值对类型的RDD 3)使用sortByKey()基于自定义的key进行二次排序 4)去掉排序的key,只保留排序的结果
时间: 2023-05-31 12:02:52 浏览: 45
1) 定义一个类SecondarySortKey,实现自定义的用于排序的key
```python
class SecondarySortKey:
def __init__(self, first, second):
self.first = first
self.second = second
def __lt__(self, other):
if self.first < other.first:
return True
elif self.first == other.first and self.second < other.second:
return True
else:
return False
def __repr__(self):
return f"({self.first}, {self.second})"
```
2) 将需要进行二次排序的文件加载进来生成(key,value)键值对类型的RDD
```python
from pyspark import SparkConf, SparkContext
conf = SparkConf().setAppName("SecondarySort").setMaster("local")
sc = SparkContext(conf=conf)
lines = sc.textFile("input.txt")
pairs = lines.map(lambda line: (SecondarySortKey(int(line.split()[0]), int(line.split()[1])), line))
```
3) 使用sortByKey()基于自定义的key进行二次排序
```python
sortedPairs = pairs.sortByKey()
```
4) 去掉排序的key,只保留排序的结果
```python
result = sortedPairs.map(lambda pair: pair[1])
result.saveAsTextFile("output")
```
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)