我正在使用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的所有结果,很容易排序和处理。我不知道这是不是一个好方法。或者您还有其他建议吗?