从/向python内存插入/读取二进制对象到数据库中Hive?

问题描述

我正在使用 python 生成许多对象,并希望将它们存储在数据库中。 以下是要求:

  • 将会有数百万/数十亿个对象。
  • 每个对象都相对较小(≈MB)。
  • 要存储的数据总大小为 TB(可能是 PetaByte)。
  • 每个对象都与一些可以进入传统数据库列的元数据相关联,(例如:对象名称/ID、创建日期、对象大小、用于创建对象的模型等......)。

当前的解决方案是将 gzip 压缩的pickled 对象写入GPFS 上的目录中,然后将它们读回python 内存。 这会导致文件过多,可扩展性不高,速度有点慢,并且没有提供我在插入/读取期间寻找的抽象级别(sql 查询很容易使用)。

我想放弃这个实现,我正在寻找某种数据库,它可以让我在对象生成期间插入对象及其元数据并查询数据库(按对象名称、分区等...)检索对象并将其加载到 python 内存中(相当快)。

我正在考虑使用 Spark 生成对象,并使用 Hive 将它们及其元数据存储在位于 S3/云存储的外部表中。 这会将 HDFS/S3 上的底层数据文件的细粒度管理留给 Hive,以避免过多的小文件或过大的文件(我希望 Spark/Hive 将小对象聚合成更大的文件或每个文件几 GB)。

--> 这听起来合理吗?如果没有,有人能想出更好的/可扩展的方法来做到这一点吗?

谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...