如何在python中使用mongo-spark连接器

时间:2018-01-02 10:36:19

标签: python mongodb pyspark

我是python的新手。我正在尝试从mongo集合创建Spark DataFrame。 为此,我选择了 mongo-spark连接器 链接 - > https://github.com/mongodb/mongo-spark

我不知道如何将这个jar / git repo用于我的python独立脚本。 我想知道如何克隆存储库,以便我可以在Windows上的独立pyspark脚本中使用它

2 个答案:

答案 0 :(得分:1)

对于仍在为此奋斗的任何人。最终对我有用的是以下配置(设置或配置mongo-spark-connector):

MongoDb版本3.4.14; Spark版本2.2.1; Scala版本2.11.8;

瓶子:

mongo-spark-connector_2.11-2.2.1.jarmongodb-driver-core-3.4.2.jarmongo-java-driver-3.4.2.jarbson-3.4.2.jar

使用正确的 spark Scala 版本和正确的 mongo-spark-connector jar版本显然是这里的关键,包括所有正确的版本 mongodb-driver-core bson mongo-java-driver 罐子中。

我必须检查 mongo-spark-connector 版本的Maven Central上的pom.xml,我需要查看哪个版本的 mongo-java-driver >我需要然后下载相应的 mongodb-driver-core bson jar。

最终测试:Scala

spark-shell --conf "spark.mongodb.input.uri=mongodb://<username>:<password>@<server>/<database>.<collection>?readPreference=primaryPreferred" --conf "spark.mongodb.output.uri=mongodb://mongodb://<username>:<password>@<server>/<database>.<collection>" --jars <path to jar>/mongo-spark-connector_2.11-2.2.1.jar,<path to jar>/mongodb-driver-core-3.4.2.jar,<path to jar>/bson-3.4.2.jar,<path to jar>/mongo-java-driver-3.4.2.jar

scala> import com.mongodb.spark._
import com.mongodb.spark._

scala> val rdd = MongoSpark.load(sc)
println(rdd.count)

test pyspark:使用聚合管道的示例

pyspark --jars <path to jar>/mongo-spark-connector_2.11-2.2.1.jar,<path to jar>/mongodb-driver-core-3.4.2.jar,<path to jar>/bson-3.4.2.jar,<path to jar>/mongo-java-driver-3.4.2.jar

In [1]: stage1="{'$match':{'_id':ObjectId('<SOME UID>')}}"
In [2]: df=spark.read.format("com.mongodb.spark.sql.DefaultSource").option("uri","mongodb://<username>:<password>@<server><database>.<collection>").option("pipeline",stage1).load()
In [3]: df.printSchema()

答案 1 :(得分:0)

检查以下代码,让我知道是否有帮助

hadoop2.7$ mongod --version

db version v3.6.8

hadoop2.7$ bin/pyspark --packages org.mongodb.spark:mongo-spark-connector_2.11:2.2.0

https://github.com/mak705/Spark_NoSql_Connector/blob/master/Mongo_Spark.ipynb