相关疑难解决方法(0)

分解Spark SQL表中的多个列

这里有一个关于此问题的问题:

爆炸(转置?)Spark SQL表中的多个列

假设我们有额外的列,如下所示:

**userId    someString      varA     varB      varC    varD**
   1        "example1"    [0,2,5]   [1,2,9]    [a,b,c] [red,green,yellow]
   2        "example2"    [1,20,5]  [9,null,6] [d,e,f] [white,black,cyan]
Run Code Online (Sandbox Code Playgroud)

总结如下输出:

userId    someString      varA     varB   varC     varD
   1      "example1"       0         1     a       red
   1      "example1"       2         2     b       green
   1      "example1"       5         9     c       yellow
   2      "example2"       1         9     d       white
   2      "example2"       20       null   e       black
   2      "example2"       5         6     f       Cyan
Run Code Online (Sandbox Code Playgroud)

答案是通过将a定义udf为:

val zip = udf((xs: Seq[Long], ys: Seq[Long]) => xs.zip(ys))
Run Code Online (Sandbox Code Playgroud)

并定义“ withColumn”。

df.withColumn("vars", …
Run Code Online (Sandbox Code Playgroud)

scala explode user-defined-functions apache-spark

6
推荐指数
1
解决办法
4069
查看次数