问题描述
我正在使用 python 生成许多对象,并希望将它们存储在数据库中。 以下是要求:
- 将会有数百万/数十亿个对象。
- 每个对象都相对较小(≈MB)。
- 要存储的数据总大小为 TB(可能是 PetaByte)。
- 每个对象都与一些可以进入传统数据库列的元数据相关联,(例如:对象名称/ID、创建日期、对象大小、用于创建对象的模型等......)。
当前的解决方案是将 gzip 压缩的pickled 对象写入GPFS 上的目录中,然后将它们读回python 内存。 这会导致文件过多,可扩展性不高,速度有点慢,并且没有提供我在插入/读取期间寻找的抽象级别(sql 查询很容易使用)。
我想放弃这个实现,我正在寻找某种数据库,它可以让我在对象生成期间插入对象及其元数据并查询数据库(按对象名称、分区等...)检索对象并将其加载到 python 内存中(相当快)。
我正在考虑使用 Spark 生成对象,并使用 Hive 将它们及其元数据存储在位于 S3/云存储的外部表中。 这会将 HDFS/S3 上的底层数据文件的细粒度管理留给 Hive,以避免过多的小文件或过大的文件(我希望 Spark/Hive 将小对象聚合成更大的文件或每个文件几 GB)。
--> 这听起来合理吗?如果没有,有人能想出更好的/可扩展的方法来做到这一点吗?
谢谢!
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)