Я пытаюсь выполнить относительно простую задачу в Spark, но она быстро становится довольно болезненной.Я анализирую JSON и хочу обновить поле после анализа JSON.Я хочу сделать это после разбора, поскольку JSON сложен (вложен) со многими элементами.
"attributes" ->
"service1" ->
"service2" ->
...
"keyId"
Однако такой подход кажется столь же сложным.Сгенерированный Row
, похоже, не знает столбцы за пределами столбцов верхнего уровня ("attribute" / "keyId").Так, например, я не могу сделать withColumn
, потому что строка верхнего уровня не видит его.
jsonDf.map((parsedJson: Row) => {
val targetFieldToReplace = parsedJson.getAs[Row](0).getList[Row](2).get(0).getAs[String](0)
????
})
Я могу извлечь значение, но не знаю, как его вернуть.Я думал о преобразовании всего в Последовательность, но это не кажется хорошей идеей, потому что это сгладит вложенную структуру.Я мог бы воссоздать строку с каждым элементом один за другим, но в этот момент это кажется неправильным.Что мне здесь не хватает?