将BerkeleyDB与Hadoop和Spark一起使用



我想将BerkeleyDB与Hadoop和Spark一起使用,是否有任何指南/教程可用于在多个节点的集群上运行Berkeley db(我有8个节点集群(

  1. 使用伯克利存储用于分析的大数据是正确的选择吗?正如我想要的树像结构化数据库
  2. 有没有更好的选择?

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

fileName = '/your/berkeley/file/path'
berkleyObject = bsddb3.btopen(fileName)

它基本上为我们提供了一个字典来遍历包含完整数据,通过该字典,我们可以使用熊猫创建数据帧

df = pandas.DataFrame(berkleyObject.items(),columns=['Key','value'])

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

sparkDF = sparkSql.createDataFrame(df)

我还没有尝试直接从伯克利 bsddb3 对象创建数据帧,但我相信它也可以工作

sparkSql.createDataFrame(berkleyObject.items())

由于 Spark 的数据帧像 RDD 一样是分布式的,因此我们所做的所有 Sql 查询都将利用 Spark 的分布式处理,即它将在所有从属/工作节点上并行运行查询。

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

唯一的问题是将字典对象转换为数据帧对象的过程太慢。我还在努力。

相关内容

最新更新