Ich habe versucht zu verstehen, wie der Mongo-Spark-Stecker unter der Haube funktioniert, aber ich bekomme immer noch nicht die ganze Arbeitslogik dahinter.Was ist die Arbeitslogik des Mongo-Spark Connectors?
Einzelheiten: Ich versuche Mongo-Funken zu verwenden, um einen Funken Job, die hauptsächlich Textsuche gegen eine MongoDB Sammlung durchführen zu laufen. Funken- und MongoDB laufen auf zwei verschiedenen Clustern
Also habe ich die folgende Funken Mongo Datenrahmen:
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()
Ist die erste Anweisung bedeutet, dass die entities_slim
Sammlung aus dem Cluster MongoDB kopiert wird, um die Funken Cluster und als Spark DataFrame dargestellt?
Wenn ja, bedeutet das, dass der Connector nur ein Werkzeug ist, das nur Daten zwischen MongoDB und Spark liest/schreibt?
Wenn ja, gibt es eine Möglichkeit, Spark-Jobs zu erstellen, die MongoDB-Requests von der MongoDB-Engine ausführen? so etwas wie:
import pymongo
from pyspark import SparkContext
spark_rdd.map(lamda x: entities.find_one({'id': best}))
Beachten Sie, dass Anweisung ausführen entity_df.filter(entity_df['id'] == "Q2834810").show()
läuft viel langsamer als direkt abfragt MongoDB mit pymongo
Danke @ user6910411. Ich brauche Spark, um Jobs auszuführen, die viele MongoDB-Abfragen ausführen müssen. Daher möchte ich keine Daten aus den MongoDB-Sammlungen zurückgeben, ausgenommen die Ergebnisse der Abfragen. Ist das möglich? –