Mongo-Spark-connector und mongo 3.2, root-Benutzer nicht Lesen kann Datenbank

Ich das offizielle mongo-spark-connector.

  • mein spark version ist 2.0
  • meine mongo-version ist 3.2.x
  • meine Funke mongo connector 1.1.0

Auf meine Datenbank habe ich ein admin mit root-Rolle, also er hat alle Rechte.

habe ich eine config wie folgt :

     val readConfig = ReadConfig(Map("spark.mongodb.auth.uri" -> "mongodb://<userName>:<password>@<ip>:27017/admin",
"spark.mongodb.input.uri" -> "mongodb://<ip>:27017/MyDatabase.myCollection"))

aber wenn ich versuche zu Lesen, die Daten bekomme ich eine Fehlermeldung „keine Berechtigung zum ausführen-Befehl.“

ich verstehe nicht, warum mein root-Benutzer ist nicht berechtigt.

InformationsquelleAutor harksin | 2016-09-19



2 Replies
  1. 6

    Weil "spark.mongodb.auth.uri" ist nicht eine Konfigurationseinstellung.

    Als input-uri nicht die Authentifizierungs-Parameter an das Lesen ist nicht erlaubt.

    Versuchen:

     val readConfig = ReadConfig(Map(
         "uri" -> "mongodb://<userName>:<password>@<ip>:27017/myDatabase.myCollection?authSource=admin"))

    oder:

     val readConfig = ReadConfig(Map(
         "uri" -> "mongodb://<userName>:<password>@<ip>:27017",  //uses the default db to auth against (admin)
         "database" -> "myDatabase",
         "collection" -> "myCollection"))
    • danke, die erste option, die perfekt funktionieren :)!
    • Wie kann ich die Abfrage auf Mongodb mit ReadConfig zu vermeiden, full table scan ??
    • Akki – vielleicht Fragen Sie in einer neuen Frage. Statt zu Fragen, in einem Kommentar auf einer alten.
  2. 1

    Zu vermeiden, einen kompletten scan, können Sie tun wie folgt:

    val rdd = MongoSpark.load(sc)
    
    val aggregatedRdd = rdd.withPipeline(Seq(Document.parse("{ $match: { test : { $gt : 5 } } }")))
    println(aggregatedRdd.count)
    println(aggregatedRdd.first.toJson)

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.