我有一个任务,我必须读取一个大文件并处理其中的数据。文件中的每一行看起来像这样:
CustomerId ItemId Amount Price
然后我需要计算客户的总成本,但首先我需要计算出购买的最昂贵的商品。然后我不得不从总成本中减去最昂贵的项目。
我的想法是首先我可以制作这张 table :
CustomerId ItemId Total_Cost
然后我对表进行排序并找到最高成本并将其存储在变量中。
然后我可以制作这张 table :
CustomerId Total_Cost
然后我将从每一行中减去最高的成本。
我觉得这是一种蛮力方法,我想知道是否有更聪明、更有效的方法来做到这一点。另外,我需要有关使用哪个库的建议。我对哪个最适合这个问题感到困惑:Spark、Storm、Flume 或 Akka-Stream。
最佳答案
您可以通过跟踪每个客户购买的最昂贵的商品来更快地做到这一点。
假设您的数据是:
4, 34, 2, 500 4, 21, 1, 700 4, 63, 5, 300
在第一行,客户 4 购买了 2 件商品,每件 500 件。您尚未将此添加到总成本中,因为此时此购买的价格最高。 当第 2 行出现时,您将这次购买与您最昂贵的购买进行比较,如果超过替换最昂贵的并且将之前最昂贵的添加到总成本中。如果更少,则添加到总成本中。
关于algorithm - 从大型数据文件计算每个客户的总成本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55982774/