Искровой паркет сглаживает вложенное значение

У меня есть паркетная папка. Я загрузил с помощью 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 после разнесения (сохраняйте ключ также в новом столбце).

Другие вопросы по тегам