假设有一个JSON数据集,其中包含汽车品牌、型号和价格。请使用Spark Core计算每个品牌的平均价格,并按平均价格从高到低对品牌进行排序
时间: 2024-05-03 08:17:15 浏览: 68
可以使用Spark Core中的RDD来处理这个问题。首先,将JSON数据加载到Spark RDD中,然后使用map和reduceByKey操作计算每个品牌的平均价格,并使用sortByKey操作按平均价格从高到低对品牌进行排序,最后将结果输出。
以下是代码示例:
```python
from pyspark import SparkContext
import json
sc = SparkContext("local", "Average Price by Brand")
# 加载JSON数据
data = sc.textFile("data/cars.json")
# 将JSON字符串转换为Python字典
cars = data.map(lambda x: json.loads(x))
# 将品牌和价格映射为键值对
brand_price = cars.map(lambda x: (x['brand'], x['price']))
# 计算每个品牌的平均价格
brand_average = brand_price.reduceByKey(lambda x, y: x + y).mapValues(lambda x: x / 2)
# 按平均价格从高到低对品牌进行排序
sorted_brands = brand_average.sortBy(lambda x: x[1], False)
# 输出结果
for brand, average_price in sorted_brands.collect():
print("{}: {}".format(brand, average_price))
```
假设数据集中的JSON字符串如下所示:
```json
{"brand": "Toyota", "model": "Corolla", "price": 20000}
{"brand": "Toyota", "model": "Camry", "price": 25000}
{"brand": "Honda", "model": "Accord", "price": 28000}
{"brand": "Honda", "model": "Civic", "price": 22000}
{"brand": "Nissan", "model": "Sentra", "price": 18000}
{"brand": "Nissan", "model": "Altima", "price": 26000}
```
则输出结果如下:
```
Honda: 25000.0
Toyota: 22500.0
Nissan: 22000.0
```
阅读全文