Scala 如何根据row Spark DataFrame的数组值生成新行和新列

Scala 如何根据row Spark DataFrame的数组值生成新行和新列,scala,apache-spark,Scala,Apache Spark,我的dataframe有两列: uid:字符串 访问:阵列 我需要制作一个包含3列的新df: uid |时间戳(来自访问的时间戳:时间戳)| url(来自访问的url:url) 我对scala和spark有点陌生,所以我不知道如何以正确的方式映射它 例如,如果我有这样的df: uid|vists uid1 |[[时间戳1:url1,时间戳2:url2]] 我需要这样做: uid |时间戳| url uid1 |时间戳1 | url1 uid1 |时间戳2 | url2 使用explode或exp

我的dataframe有两列: uid:字符串 访问:阵列

我需要制作一个包含3列的新df: uid |时间戳(来自访问的时间戳:时间戳)| url(来自访问的url:url)

我对scala和spark有点陌生,所以我不知道如何以正确的方式映射它

例如,如果我有这样的df:

uid|vists

uid1 |[[时间戳1:url1,时间戳2:url2]]

我需要这样做:

uid |时间戳| url

uid1 |时间戳1 | url1

uid1 |时间戳2 | url2


使用
explode
explode\u outer
函数分解数组列

检查下面的代码

scala> df.printSchema
root
 |-- uid: string (nullable = true)
 |-- visits: array (nullable = true)
 |    |-- element: struct (containsNull = true)
 |    |    |-- timestamp: long (nullable = true)
 |    |    |-- url: string (nullable = true)


使用
explode
explode\u outer
函数分解数组列

检查下面的代码

scala> df.printSchema
root
 |-- uid: string (nullable = true)
 |-- visits: array (nullable = true)
 |    |-- element: struct (containsNull = true)
 |    |    |-- timestamp: long (nullable = true)
 |    |    |-- url: string (nullable = true)