2016-01-13 64 views
0

我有一个DataFrame,我想通过一个新列进行扩展。从创建一个新的DateFrame s解释here将列附加到Spark中的行中

我目前的策略是与被传递到我的地图由DataFrame.javaRDD().map(...)调用 S中RowFactory建设新秒,但我担心这可能会产生不必要的费用。

所以我想知道是不是创建新的 s,我可以通过追加新的字段来扩展现有的。 接口似乎不允许这样做。

code of Row

+0

我认为你不能修改,因为它是不可改变的 –

回答

2

由于@Sachin贾纳尼提到在评论您不能修改行(它是不可变的),但你可以使用withColumn -function列追加到DataFrame。下面的代码将例如添加一列与“文本”列中找到的字符串的长度:

val stringLength = udf[Int, String](s => s.length) 
val df2 = df1.withColumn("text_length", stringLength(df1("text"))) 

希望这可以帮助。

+0

谢谢,这是非常接近我想要的,但我的udf会非常复杂(计算某些字出现在另一列的文本)。我一定会保持[withColumn](https://spark.apache.org/docs/1.4.0/api/java/org/apache/spark/sql/DataFrame.html#withColumn%28java.lang.String,% 20org.apache.spark.sql.Column%29)。这[后](http://stackoverflow.com/questions/29483498/append-a-column-to-data-frame-in-apache-spark-1-3)与此有关。 – Jonathan