我有一个 7 giga 机密数据集,我想将其用于机器学习应用程序。
我试过 :
每个包都推荐用于 R 中的有效数据集管理,例如:
- 数据表,
- ff
- 和 sqldf 没有成功。
Data.table 需要从我读取的内容中加载内存中的所有数据,因此很明显它不会工作,因为我的计算机只有 4g RAM。Ff 也会导致内存错误。
所以我决定转向 sgdb 并尝试:
- Mysql 成功地在 2 小时 21 分钟内加载了我的数据集。然后我开始了我的请求(在我为机器学习应用程序导出 R 中较小的集合之前,我有几个请求要准备我的数据),然后我不得不等待几个小时才收到以下消息“总数锁超过了锁表大小”(我的请求只是从每个元组的日期中提取月份的更新)。
- 我读到 postgre 在性能上与 mysql 相似,所以我没有尝试
- 我读到redis确实很高效,但根本不适合像我想在这里做的大规模进口,所以我没有尝试
- 我尝试了 mongoDb,这是我到处听说的 nosql 提升解决方案。不仅我发现 mongoimport 的选项非常有限(我必须在导入数据之前使用 sed 更改逗号中的所有分号),而且自从我昨天启动加载以来,mysql 的性能似乎较低并且它仍在运行。
我不能尝试的:数据是机密的,所以我真的不想在 Azure 或亚马逊云解决方案上租用一些空间。我不确定我必须转向 Hadoop 解决方案是否有那么大,但也许我错了。
有没有我没有尝试过的开源高性能解决方案,您会推荐在大型数据集上执行一些类似 sql 的请求?
编辑:关于我想用这些数据做什么的更多细节供您可视化。这些是带有时间戳和地理定位的事件。我有 80 亿行。我想做的一个例子:
- 标准化由地理定位识别的系列(例如,我需要通过地理定位计算平均分组),
- 按季节、日期类型计算事件的平均计数...(通常按 sql 请求分组)...
编辑
对于像我这样硬件有限的人来说,作为答案的开始,rSQLite 似乎是一种可能性。我仍然对其他人的经历感兴趣。