将 BerkeleyDB 与 Hadoop 和 Spark 结合使用

Using BerkeleyDB with Hadoop and Spark

我想将 BerkeleyDB 与 Hadoop 和 Spark 一起使用,是否有任何 guide/tutorials 可用于 运行 berkeley db 在多节点集群上(我有 8 个节点集群)

  1. 使用 Berkeley 存储大数据以供分析是否是正确的选择?因为我想要树状结构化数据库
  2. 有没有更好的选择?

我自己找到了答案。 当我们使用

连接 berkeley db 时
fileName = '/your/berkeley/file/path'
berkleyObject = bsddb3.btopen(fileName)

它基本上给了我们一个字典来遍历包含完整的数据,我们可以通过它使用 pandas

创建数据框
df = pandas.DataFrame(berkleyObject.items(),columns=['Key','value'])

然后我们可以将这个数据帧加载到 Spark 的 SqlContext

sparkDF = sparkSql.createDataFrame(df)

我还没有尝试直接从 berkeley bsddb3 对象创建数据框,但我相信它也能工作

sparkSql.createDataFrame(berkleyObject.items())

由于 spark 的数据帧像 RDD 一样分布,因此我们进行的所有 Sql 查询都将利用 spark 的分布式处理,即它将 运行 在所有 slave/worker 节点上并行查询。

sparkDF.registerTempTable("Data")
result = sparkSql.sql("SELECT * FROM Data WHERE Key == 'xxxx' ")

唯一的问题是将 Dictionary 对象转换为 DataFrame 对象的过程太慢了。我还在努力。