2016-01-13 98 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