Создать отдельную строку для типа массива Spark DataFrame - PullRequest
0 голосов
/ 25 июня 2019

у меня есть следующая схема свечей данных

root
 |-- UserId: long (nullable = true)
 |-- VisitedCountry: array (nullable = true)
 |    |-- element: struct (containsNull = true)
 |    |    |-- Name: string (nullable = false
 |    |    |-- Id: long (nullable = false)

я хочу преобразовать каждую VisitedCountry в отдельную строку в новом фрейме данных

root
 |-- UserId: long (nullable = true)
 |-- CountryName: string (nullable = false)
 |-- CountryId: long (nullable = false)

Ответы [ 2 ]

1 голос
/ 25 июня 2019

Взорваться и выбрать, на Scala:

df.withColumn("exploded", explode($"VisitedCountry"))
  .select($"UserId",
    $"exploded.Name".alias("CountryName"),
    $"exploded.ID".alias("CountryId")
  )
0 голосов
/ 25 июня 2019

Вы, вероятно, захотите использовать функцию разнесения.

проверить https://spark.apache.org/docs/latest/api/python/pyspark.sql.html?highlight=explode

Я не уверен, как это будет работать со структурами.

...