Как сохранить строку как json в scala искре - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть сырые строки в файле журнала. Я делаю много фильтров и других операций после этого. Я достиг следующей проблемы, как показано ниже. Мне нужно преобразовать строку в json формат. Так что я могу сохранить его как один объект.

Предположим, у меня есть следующие данные

Val CDataTime = "20191012"
Val LocationId = "12345"
Val SetInstruc = "Comm=Qwe123,Elem=12345,Elem123=Test"

Я пытаюсь создать фрейм данных, который содержит datetime | location | jsonofinstruction

Jsonofstring - json третьего Val; Я пытаюсь разбить строку сначала через запятую, а затем на знак равенства и l oop до 2 и создать карту значений 1 и 2 в качестве значения. Но json не создан. Пожалуйста, помогите здесь.

1 Ответ

1 голос
/ 05 февраля 2020

Вы можете использовать scala.util.parsing.json.JSONObject для преобразования карты в JSON, а затем в строку.

    val df = spark.createDataset(Seq("Comm=Qwe123,Elem=12345,Elem123=Test")).toDF("col3")

    val dfWithJson = df.map{ row =>
      val insMap = row.getAs[String]("col3").split(",").map{kv =>
        val kvArray = kv.split("=")
        (kvArray(0),kvArray(1))
      }.toMap

      val insJson = JSONObject(insMap).toString()

      (row.getAs[String]("col3"),insJson)

    }.toDF("col3","col4").show()

Результат -

+--------------------+--------------------+
|                col3|                col4|
+--------------------+--------------------+
|Comm=Qwe123,Elem=...|{"Comm" : "Qwe123...|
+--------------------+--------------------+
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...