it-swarm.dev

Vieni DataFrame in Json?

Ho un enorme file Json, una piccola parte da esso come segue:

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

Ho applicato la vista laterale exlode su socialNews come segue:

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")

Ora voglio convertire questo risultato (DataFrame) in json e salvarlo in un file, ma non sono in grado di trovare alcuna scala api per fare la conversione . C'è una libreria standard per fare questo o un modo per capirlo su? 

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

Il metodo write si trova nella classe DataFrameWriter e dovrebbe essere accessibile a voi su oggetti DataFrame. Assicurati che il tuo rdd sia di tipo DataFrame e non di tipo deprecato SchemaRdd. È possibile fornire esplicitamente la definizione di tipo val data: DataFrame o eseguire il cast su dataFrame con toDF().

23
Nikita

Se si dispone di un DataFrame, esiste un'API per riconvertire in un RDD [String] contenente i record 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)

Questo dovrebbe essere disponibile da Spark 1.4 in poi. Chiama l'API sul risultato DataFrame che hai creato. 

Le API disponibili sono elencate qui

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

Se ancora non riesci a trovare un modo per convertire Dataframe in JSON, puoi usare to_json o toJSON nelle funzioni di Spark incorporate.

Fammi sapere se hai un esempio di Dataframe e un formato di JSON da convertire.

0
Chetan Tamballa