在我的 Java 项目中,我需要读取一个大约有 160 万行的文件。
每一行代表用户在一天内完成的一项操作。如果我没记错的话,有 83 种不同的可能操作。
我需要按如下方式分析该文件并将找到的统计信息存储在 csv
文件中:
通常:计算一个 Action 发生的频率(数字会高达大约 50 万)
但也应该有单独的文件:
一个 Action 每小时发生的频率是多少? (csv 文件中的 24 行)
每位用户执行一次操作的频率如何? (大约 20 个不同的用户 - 每个用户一个文件)
每个用户每小时执行一次操作的频率是多少? (每个用户单独的文件,其中 24 行)
最重要的是,有 3 个不同的 channel (HTML、手机、电话)可能会发生这些事情(也保存在日志文件中),所以我需要为每个 channel 创建一个文件夹,并为每个 channel 做上面提到的事情每一个。
问题:
我怎样才能有效地存储/计算这个?运行时间不是什么大问题(它不应该运行一天但它需要半小时没问题) 但我该如何计算呢?
我不能只为每件事都创建那么多计数器(数量会很大),而且 int[]
在我看来在这里不是很方便,因为我必须记住哪个 Action 有哪个索引等
有没有更好的解决方案?
我考虑过使用本地数据库和 SQ
L 脚本,但该程序需要在每台 PC 上运行,并且必须可以从命令行执行(不一定在 IDE 中)。我正在使用 Intellij 14
进行开发。
最佳答案
嵌入式数据库,如H2 .
任何包装都意味着您必须自己做所有事情。
为了提高速度,您可以在多个级别上设置计数字段,也许作为单独的表。带有用于检查的时间戳。
优点是可以灵活的做报表。轻松备份。
当一切正常时,可以稍后进行自定义重构。
关于java - 避免在 Java 中使用大量计数器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31718344/