Как конвертировать строки в JSON в Spark 2 Scala

Есть ли простой способ преобразования данного объекта строки в JSON?

Нашел это о преобразовании всего Dataframe в вывод json:Спарк Роу в JSON

Но я просто хочу конвертировать одну строку в JSON. Вот псевдокод того, что я пытаюсь сделать.

Точнее, я читаю json как ввод в Dataframe. Я создаю новый вывод, который в основном основан на столбцах, но с одним полем JSON для всей информации, которая не вписывается в столбцы.

Мой вопрос, какой самый простой способ написать эту функцию: convertRowToJson ()

def convertRowToJson(row: Row): String = ???

def transformVenueTry(row: Row): Try[Venue] = {
  Try({
    val name = row.getString(row.fieldIndex("name"))
    val metadataRow = row.getStruct(row.fieldIndex("meta"))
    val score: Double = calcScore(row)
    val combinedRow: Row = metadataRow ++ ("score" -> score)
    val jsonString: String = convertRowToJson(combinedRow)
    Venue(name = name, json = jsonString)
  })
}

Решения Psidom:

def convertRowToJSON(row: Row): String = {
    val m = row.getValuesMap(row.schema.fieldNames)
    JSONObject(m).toString()
}

работает только если строка имеет только один уровень, а не с вложенной строкой. Это схема:

StructType(
    StructField(indicator,StringType,true),   
    StructField(range,
    StructType(
        StructField(currency_code,StringType,true),
        StructField(maxrate,LongType,true), 
        StructField(minrate,LongType,true)),true))

Также попробовал предложение Артема, но тот не скомпилировал:

def row2DataFrame(row: Row, sqlContext: SQLContext): DataFrame = {
  val sparkContext = sqlContext.sparkContext
  import sparkContext._
  import sqlContext.implicits._
  import sqlContext._
  val rowRDD: RDD[Row] = sqlContext.sparkContext.makeRDD(row :: Nil)
  val dataFrame = rowRDD.toDF() //XXX does not compile
  dataFrame
}

Ответы на вопрос(7)

Ваш ответ на вопрос