Я храню в своей коллекции MongoDB огромный список JSON строк. Для простоты я извлек образец документа в текстовый файл businessResource.json
:
{
"data" : {
"someBusinessData" : {
"capacity" : {
"fuelCapacity" : NumberLong(282)
},
"someField" : NumberLong(16),
"anotherField" : {
"isImportant" : true,
"lastDateAndTime" : "2008-01-01T11:11",
"specialFlag" : "YMA"
},
...
}
Моя проблема : как я могу преобразовать "someBusinessData" в объект JSON, используя Спарк / Scala?
Если я сделаю это (например, используя json4s или lift- json), я надеюсь, что смогу выполнить над ними базовые операции c, например, проверив их на равенство.
Имейте в виду, что это довольно большой JSON объект. Создание класса case в моем случае не стоит, поскольку единственная операция, которую я буду выполнять, - это некоторая фильтрация по двум полям, сравнение документов на равенство, а затем я снова их экспортирую.
Вот как я получаю данные:
val df: DataFrame = (someSparkSession).sqlContext.read.json("src/test/resources/businessResource.json")
val myData: DataFrame = df.select("data.someBusinessData")
myData.printSchema
Схема показывает:
root
|-- someBusinessData: struct (nullable = true)
| |-- capacity: struct (nullable = true)
Поскольку "someBusinessData" является структурой, я не могу получить ее как String , Когда я пытаюсь печатать, используя myData.first.getStruct(0)
, я получаю строку, содержащую значения, но не ключи: [[[282],16,[true,2008-01-01T11:11,YMA]
Спасибо за вашу помощь!