0

我有一个数据库,其中包含大约 400 万条美国股票、共同基金和 ETF 价格的 5 年记录,并且每天我都在为每种证券添加每日价格。

对于我正在开发的一项功能,我需要获取每种证券的最新价格(分组最大值),并使用其他财务指标进行一些计算。证券数量约为 40K。

但是这个数据量的分组最大值很重,需要几分钟才能执行。

当然,我的表使用索引,但任务涉及获取和实时处理近 7GB 的数据。

所以我很感兴趣,这个任务是针对大数据工具和算法还是少量数据?因为在示例中我注意到他们正在处理成千上万 GB 的数据。

我的数据库是 MySQL,我想使用 Hadoop 来处理数据。这是一种好的做法,还是我只需要使用 MySQL 优化(我的数据很小吗?),或者如果在这么多数据中使用 Hadoop 是错误的,你对这种情况有什么建议?

请注意,我每天的增长和项目涉及许多分析,需要根据用户要求实时完成。

注意不知道这个问题是否可以在stackoverflow中提问,所以如果问题离题,请见谅。

提前致谢!

4

2 回答 2

2

在 Hadoop 术语中,您的数据绝对很小。最新的计算机具有 16+ GB 的 RAM,因此您的数据集可以完全适合单台计算机的内存。

但是,这并不意味着您至少可以尝试将数据加载到 HDFS 并对其执行一些操作。Sqoop & Hive 将是您用来加载和进行 SQL 处理的工具。

不过,由于我提出了关于内存的观点,完全可行的是,您不需要 Hadoop(HDFS 和 YARN),而是可以使用带有 SparkSQL的 Apache Spark 直接从分布式 JDBC 连接访问 MySQL。

于 2017-10-24T21:25:51.090 回答
0

对于 MySQL,您可以利用索引,并通过 Order(M) 实现目标,其中 M 是证券数量 (40K) 而不是 O(N),其中 N 是表中的行数。

这是一个需要调整的例子。

于 2017-10-27T13:56:34.043 回答