2017-04-11 91 views
1

我正在連接MongoDB到Spark,我想使用查詢加載數據。帶火花的查詢mongodb

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

但它返回我整個集合。如何在Spark中重現與查詢db.test.find({'name':'jack'})相同的內容?

回答

2

您可以使用filterwhere指定條件:

from pyspark.sql.functions import col 

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

它會轉換成aggregation pipeline

當使用DataFrames過濾器或Spark SQL,底層蒙戈連接器的代碼構造一個聚合管道在將數據發送給Spark之前過濾MongoDB中的數據。