【发布时间】:2017-12-15 15:34:30
【问题描述】:
我一直试图了解 mongo-spark 连接器的工作原理,但我仍然没有了解它背后的整个工作逻辑。
详情: 我正在尝试使用 Mongo-Spark 运行一个 spark 作业,该作业主要针对 MongoDB 集合执行文本搜索。 Spark 和 MongoDB 在两个不同的集群上运行
所以我创建了以下 Spark-mongo 数据框:
entity_df = sqlContext.read.format("com.mongodb.spark.sql.DefaultSource") \
.option("spark.mongodb.input.database", "WikiData") \
.option("spark.mongodb.input.collection", "entities_slim") \
.load()
entity_df.cache()
df = entity_df.filter(entity_df['id'] == "Q2834810").show()
第一条指令是否意味着entities_slim 集合正在从 MongoDB 集群复制到 spark 集群并表示为 Spark DataFrame?
如果是,这是否意味着连接器只是一个工具,只能在 MongoDB 和 Spark 之间读取/写入数据?
如果是,有没有办法通过 MongoDB 引擎创建运行 MongoDB 查询的 spark 作业?类似:
import pymongo
from pyspark import SparkContext
spark_rdd.map(lamda x: entities.find_one( {'id': best} ))
请注意,执行语句 entity_df.filter(entity_df['id'] == "Q2834810").show() 比使用 pymongo 直接查询 MongoDB 运行速度要慢得多
【问题讨论】:
标签: mongodb apache-spark pyspark