2017-04-11 5 views
1

Ich bin MongoDB mit Spark verbinden und ich möchte Daten mit einer Abfrage laden.Abfrage mongodb mit Funken

df = sqlContext.read.format("com.mongodb.spark.sql").options(collection='test', query = {'name' :'jack'}).load() 
df.show() 

Aber es gibt mir die ganze Sammlung zurück. Wie kann ich das Gleiche wie diese Abfrage db.test.find ({'name': 'jack'}) in Spark reproduzieren?

Antwort

2

können Sie filter oder where verwenden, um die Bedingung zu spezifizieren:

from pyspark.sql.functions import col 

df.filter(col("name") == "jack") 

es in ein aggregation pipeline umgewandelt wird:

Wenn SQL unter Verwendung von Filtern mit Datenrahmen oder Funken, die zugrunde liegenden Mongo-Connector Code-Konstrukte eine Aggregationspipeline, um die Daten in MongoDB zu filtern, bevor sie an Spark gesendet werden.