如何将包含WrappedArrays的Spark SchemaRDD中的两列与组合的WrappedArray组合成第三列?

时间:2016-10-05 20:00:30

标签: scala apache-spark spark-dataframe

我有一个包含WrappedArrays的两列(“features1”和“features2”)的DataFrame。

我需要将两列组合成第三列,其中包含前两列的合并内容作为WrappedArray。

我该怎么做?

我正在使用Scala而不是PySpark

1 个答案:

答案 0 :(得分:2)

我没有找到另一种方式而不是udf,令人惊讶

def catArray[A](a:Seq[A], b: Seq[A]): Seq[A] = a ++ b 
val catArrayUdf = udf { catArray[Int] _ }

然后

scala> sc.parallelize(List((Seq(1,2),Seq(3,4))))
  .toDF("A","B")
  .withColumn("cat",catArray('A,'B))
  .show(false)
+------+------+------------+
|A     |B     |cat         |
+------+------+------------+
|[1, 2]|[3, 4]|[1, 2, 3, 4]|
+------+------+------------+

尽管如此,基于++定义UDF的方法可能更短。