algorithm - 从大型数据文件计算每个客户的总成本

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

我有一个任务,我必须读取一个大文件并处理其中的数据。文件中的每一行看起来像这样:

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/

相关文章:

java - 使用 Storm 流和 Spark 流进行 XML 解析

Java:如何根据非字母分隔符反转字符串?

algorithm - 使用递归查找空间和时间的复杂性

java - Apache Spark Streaming 中的非关联聚合

java - 线程 "main"java.lang.NoClassDefFoundError : backtype/storm/spout/MultiScheme 中出现异常

java - 测试 java HBase 连接

管材切割优化算法

python - Python Bug 中的合并排序

java - 我怎样才能不间断地运行 Spark 流

hadoop - 来自文件夹(不是 HDFS)的 Apache Spark Streaming