我想将BerkeleyDB与Hadoop一起使用,Spark是否有任何指南/教程可用于在多个节点的集群上运行berkeley db(我有8个节点集群)
答案 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对象的过程太慢。我还在努力。