web-dev-qa-db-fra.com

Comment convertir DataFrame en Json?

J'ai un énorme fichier Json, dont une petite partie est la suivante:

{
    "socialNews": [{
        "adminTagIds": "",
        "fileIds": "",
        "departmentTagIds": "",
        ........
        ........
        "comments": [{
            "commentId": "",
            "newsId": "",
            "entityId": "",
            ....
            ....
        }]
    }]
    .....
    }

J'ai appliqué la vue latérale exlode sur socialNews comme suit:

val rdd = sqlContext.jsonFile("file:///home/ashish/test")
rdd.registerTempTable("social")
val result = sqlContext.sql("select * from social LATERAL VIEW explode(socialNews) social AS comment")

Maintenant, je veux reconvertir ce résultat (DataFrame) en json et l'enregistrer dans un fichier, mais je ne parviens pas à trouver un api scala pour effectuer la conversion. en dehors? 

15
ashish.garg
val result: DataFrame = sqlContext.read.json(path)
result.write.json("/yourPath")

La méthode write se trouve dans la classe DataFrameWriter et devrait vous être accessible sur les objets DataFrame. Assurez-vous simplement que votre rdd est de type DataFrame et non de type obsolète SchemaRdd. Vous pouvez explicitement fournir la définition de type val data: DataFrame ou transtyper vers dataFrame avec toDF().

23
Nikita

Si vous avez un DataFrame, il y a une API à reconvertir en un RDD [String] contenant les enregistrements json. 

val df = Seq((2012, 8, "Batman", 9.8), (2012, 8, "Hero", 8.7), (2012, 7, "Robot", 5.5), (2011, 7, "Git", 2.0)).toDF("year", "month", "title", "rating")
df.toJSON.saveAsTextFile("/tmp/jsonRecords")
df.toJSON.take(2).foreach(println)

Cela devrait être disponible à partir de Spark 1.4. Appelez l'API sur le résultat DataFrame que vous avez créé. 

Les API disponibles sont listées ici

17
MrChristine
sqlContext.read().json(dataFrame.toJSON())
2
abhijitcaps

Si vous ne pouvez toujours pas trouver un moyen de convertir Dataframe en JSON, vous pouvez utiliser les fonctions to_json ou toJSON intégrées Spark.

Faites-moi savoir si vous avez un exemple de Dataframe et un format de JSON à convertir.

0
Chetan Tamballa