Искровой паркет сглаживает вложенное значение
У меня есть паркетная папка. Я загрузил с помощью Spark. И одним из значений является вложенный ключ, пары значений. Как мне сгладить?
df.printSchema
root
|-- location: string (nullable = true)
|-- properties: string (nullable = true)
texas,{"key":{"key1":"value1","key2":"value2"}}
Спасибо,
1 ответ
Вы можете использовать explode на вашем фрейме данных и передать ему функцию, которая читает столбец JSON, используя scala4s. Scala4s имеет простой API для разбора, для вашего случая это будет выглядеть так:
val list = for {
JArray(keys) <- parse(json) \\ "key"
json @ JObject(key) <- keys
JField("key1", JString(key1)) <- key
JField("key2", JString(key2)) <- key
} yield {
Seq(key1, key2)
}
Это выравнивает ваш фрейм данных.
Если вы также хотите добавить столбец для ключа, вы можете использовать withColumn после разнесения (сохраняйте ключ также в новом столбце).