我有一个包含大约400万美国股票,共同基金和ETF价格记录的数据库,为期5年,每天我都会为每个证券增加每日价格。
对于我正在处理的一项功能,我需要获取每个安全性的最新价格(groupwise max),并使用其他财务指标进行一些计算。 证券数量约为40K。
但是这个数据量的分组最大值很大,需要几分钟才能执行。
当然我的表使用索引,但任务涉及获取和实时处理近7GB的数据。
所以我感兴趣,这是大数据工具和算法的任务还是少量数据?因为在示例中我注意到他们正在处理数千和数百万GB的数据。
我的数据库是MySQL,我想使用Hadoop处理数据。 这是好的做法还是我只需要使用MySQL优化(我的数据是否很小?)或者如果在该数据量中使用Hadoop是错误的,那么您可以为此案例提供建议吗?
注意我每天和项目的增加涉及许多分析,需要根据用户请求实时完成。
注意不知道这个问题在stackoverflow中是否可以提问,所以如果问题不在主题,请抱歉。
提前致谢!
答案 0 :(得分:1)
在Hadoop术语中,您的数据肯定很小。最新的计算机具有16 GB以上的RAM,因此您的数据集可以完全适合单个计算机的内存。
但是,这并不意味着您至少可以尝试将数据加载到HDFS并对其执行某些操作。 Sqoop& Hive将是您用来加载和进行SQL处理的工具。
因为我提出了关于内存的观点,但是完全可行的是你不需要Hadoop(HDFS& YARN),而是可以使用Apache Spark w/ SparkSQL直接从分布式JDBC连接命中MySQL。
答案 1 :(得分:0)
对于MySQL,您可以利用索引,并通过Order(M)实现目标,其中M是证券数量(40K)而不是O(N),其中N是表中的行数。
这是需要调整的example。