将列表作为列添加到scala中的数据框

时间:2017-07-26 13:42:41

标签: scala apache-spark

我有一个包含18行记录的dataFrame,这个dataFrame有20多列。 例如:

-----------                My list: ('N','N')
A   B   C
-----------
a   b   c
d   e   f

我还有一个包含18个值的列表。现在我想将此列表添加到我的dataFrame中,列表中的每个值都对应一行的值。

这意味着最终结果应该是这样的:

--------------
A   B   C   D
--------------
a   b   c   N
d   e   f   N

以下是我尝试的内容(来自this link):

//C is a list of values
val rdd = sc.parallelize(C)

//joindf is my dataframe has 20+ columns
val rdd_new = joindf.rdd.zip(rdd).map(r => Row.fromSeq(r._1.toSeq ++ Seq(r._2)))
sqlContext.createDataFrame(rdd_new,joindf.schema.add("CD",StringType)).show

这给我这样的错误:Can't zip RDDs with unequal numbers of partitions: List(200,2)

任何帮助将不胜感激!

更新

不确定为什么分区或zip不能解决问题,但注释提供了另一种方法。我只是从this link

复制方法

0 个答案:

没有答案