将 BerkeleyDB 与 Hadoop 和 Spark 结合使用
Using BerkeleyDB with Hadoop and Spark
我想将 BerkeleyDB 与 Hadoop 和 Spark 一起使用,是否有任何 guide/tutorials 可用于 运行 berkeley db 在多节点集群上(我有 8 个节点集群)
- 使用 Berkeley 存储大数据以供分析是否是正确的选择?因为我想要树状结构化数据库
- 有没有更好的选择?
我自己找到了答案。
当我们使用
连接 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 对象的过程太慢了。我还在努力。
我想将 BerkeleyDB 与 Hadoop 和 Spark 一起使用,是否有任何 guide/tutorials 可用于 运行 berkeley db 在多节点集群上(我有 8 个节点集群)
- 使用 Berkeley 存储大数据以供分析是否是正确的选择?因为我想要树状结构化数据库
- 有没有更好的选择?
我自己找到了答案。 当我们使用
连接 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 对象的过程太慢了。我还在努力。