如何在计算后根据组划分结果?

时间:2016-03-29 06:53:08

标签: python apache-spark

我正在使用Apache Spark进行一些计算。原始数据采用以下格式

car_brand, color, type,     price
Toyota,    red,   sport,    100
Toyota,    red,   business, 200
Honda,    blue,  business, 100
Tesla,     red,   sport,    9999

计算使用SparkSQL,如下所示:

SELECT car_brand, color, avg(price) FROM car GROUP BY car_brand,color ORDER BY avg(price)

结果可能如下:

car_brand, color, avg(price)
Toyota,    red,   100
Toyota,    green, 99
Toyota,    blue,  98
Toyota,    black, 97
Tesla,     red,   9999
Tesla,     black, 9998
...

我想为每个汽车品牌获得前3种颜色,并将其保存到其他存储设备中,例如mongo。

问题

我的问题是如何将结果数据集发送到mongo db等其他位置。

因为结果数据集是分布式数据结构,所以它可能非常大。

当然我不应该将它们收集到本地,然后使用for循环来处理。我想根据car_brand重新划分数据集。然后我就可以用了 dataframe.foreachPartiton同时处理每个分区。每个分区都有每个car_brand的所有结果,很容易排序和处理。我不知道这是不是一个好方法。或者您还有其他建议吗?

0 个答案:

没有答案