我有一个数据库,记录了5年来约400万份美国股票、共同基金和etf的价格,每天我都在为每种证券添加每日价格。
对于我正在开发的一个特性,我需要获取每个安全性的最新价格(groupwisemax),并使用其他财务指标进行一些计算。证券数量约为4万。
但是groupwise的最大数据量非常大,需要几分钟才能执行。
当然,我的表使用索引,但任务涉及获取和实时处理近7gb的数据。
所以我很感兴趣,这个任务是针对大数据工具和算法,还是针对小数据量?因为在示例中,我注意到他们正在处理成千上万GB的数据。
我的数据库是mysql,我想用hadoop来处理数据。这是一个很好的实践,还是我只需要使用mysql优化(我的数据小吗?),或者如果在这么多的数据中使用hadoop是错误的,那么对于这种情况,您有什么建议?
请注意,我每天增加和项目涉及许多分析,这需要实时完成,根据用户的要求。
注意:我不知道这个问题是否可以在stackoverflow中提问,所以如果问题离题,请道歉。
提前谢谢!
2条答案
按热度按时间xggvc2p61#
用hadoop的术语来说,你的数据肯定很小。最新的计算机有16+gb的ram,因此您的数据集可以完全放入一台机器的内存中。
但是,这并不意味着您至少可以尝试将数据加载到hdfs中并对其执行一些操作。sqoop&hive将是用于加载和进行sql处理的工具。
不过,既然我提到了关于内存的观点,就完全可以不需要hadoop(hdfs&yarn),而是可以使用apachespark w/sparksql直接从分布式jdbc连接访问mysql。
cig3rfwq2#
对于mysql,您可以利用索引,并使用order(m)实现目标,其中m是证券的数量(40k),而不是o(n),其中n是表中的行数。
这是一个需要调整的例子。