将BerkeleyDB与Hadoop和Spark结合使用

时间:2017-05-09 07:21:40

标签: hadoop apache-spark pyspark berkeley-db

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

  1. 使用Berkeley存储BigData进行分析是否是正确的选择?因为我想树像结构化的数据库
  2. 还有更好的选择吗?

1 个答案:

答案 0 :(得分:0)

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

连接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的分布式处理,即它将在所有从属/工作节点上并行运行查询。

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

只有catch是将Dictionary对象转换为DataFrame对象的过程太慢。我还在努力。