通过大数据文件计算每位客户的总成本

时间:2019-05-04 12:58:57

标签: algorithm spark-streaming apache-storm akka-stream flume

我的任务是读取大文件并处理其中的数据。文件中的每一行看起来都像这样:

CustomerId   ItemId  Amount   Price

然后,我需要为客户计算总成本,但是首先,我需要计算出购买的最昂贵的商品。然后,我必须从总成本中减去最昂贵的物品。

我的想法是首先可以制作这张桌子:

CustomerId  ItemId Total_Cost

然后我对表格进行排序,找出成本最高的商品并将其存储在变量中。

然后我可以制作这张桌子:

CustomerId  Total_Cost

然后,我将从每一行中扣除最高的费用。

我觉得这是蛮力的方法,我想知道是否有更聪明,更有效的方法来做到这一点。另外,我需要有关使用哪个库的建议。对于哪个问题最适合这个问题,我感到困惑:Spark,Storm,Flume或Akka-Stream。

1 个答案:

答案 0 :(得分:0)

通过跟踪每个客户购买的最昂贵的商品,您可以更快地做到这一点。

假设您的数据是:

4,34,2,500 4,21,1,700 4,63,5,300

在第一行上,客户4购买2件商品,共500件。您尚未将其添加到总费用中,因为在这一点上,这笔购买是最昂贵的。 当第2行出现时,您可以将此购买交易与最昂贵的购买交易进行比较(如果可以取代最昂贵的购买交易,然后将之前最昂贵的交易加到总成本中)。如果少于,则增加总费用。