J'utilise Spark-MongoDB et je suis en train d'enregistrer une trame de données dans MongoDB:Spark dataframe est enregistré MongoDB au mauvais format
val event = """{"Dev":[{"a":3},{"b":3}],"hr":[{"a":6}]}"""
val events = sc.parallelize(event :: Nil)
val df = sqlc.read.json(events)
val saveConfig = MongodbConfigBuilder(Map(Host -> List("localhost:27017"),
Database -> "test", Collection -> "test", SamplingRatio -> 1.0, WriteConcern -> "normal",
SplitSize -> 8, SplitKey -> "_id"))
df.saveToMongodb(saveConfig.build)
J'attends les données à enregistrer en tant que la chaîne d'entrée, mais ce qui est réellement sauvé est:
{ "_id": ObjectId ("57cedf4bd244c56e8e783a45"), "Dev": [{ "a": NumberLong (3), "b": null}, { "a" : null, "b": NumberLong (3)}], "hr": [{"a": NumberLong (6)}]}
Je veux éviter ces valeurs nulles et les doublons, Une idée?
Il n'y a pas de doublons ici et explicite 'null' devrait. Il s'agit exactement du format obtenu à partir de JSON analysé lorsqu'il est mappé au schéma Spark. – zero323
Alors, y a-t-il un moyen de mapper le format original (sans nul) avant de sauvegarder? –
C'est parce que vous importez les données json dans un DataFrame et que vous définissez le schéma pour toutes les données. Si le connecteur le supporte, utilisez 'SparkContext' à la place et sauvegardez le RDD. A défaut, le https://docs.mongodb.com/spark-connector/ le supporte. – Ross