it-roy-ru.com

Как преобразовать DataFrame в Json?

У меня есть огромный JSON-файл, небольшая часть которого выглядит следующим образом:

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

Я применил вид сбоку exlode на socialNews следующим образом:

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

Теперь я хочу преобразовать этот результат (DataFrame) в json и сохранить в файл, но я не могу найти ни одного scala api для преобразования .... Есть ли какая-либо стандартная библиотека для этого или какой-то способ ее вычислить? из? 

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

Метод write находится в классе DataFrameWriter и должен быть доступен вам для объектов DataFrame. Просто убедитесь, что ваш rdd имеет тип DataFrame, а не устаревший тип SchemaRdd. Вы можете явно предоставить определение типа val data: DataFrame или привести к dataFrame с помощью toDF().

23
Nikita

Если у вас есть DataFrame, есть API для преобразования обратно в RDD [String], который содержит записи 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)

Это должно быть доступно начиная с версии Spark 1.4. Вызовите API в созданном вами результате DataFrame. 

Доступные API перечислены здесь

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

Если вы все еще не можете найти способ конвертировать Dataframe в JSON, вы можете использовать встроенные функции Spark to_json или toJSON.

Дайте мне знать, если у вас есть образец Dataframe и формат JSON для преобразования.

0
Chetan Tamballa