我有一個DataFrame
,我想通過一個新列進行擴展。從創建一個新的DateFrame
s解釋here。將列附加到Spark中的行中
我目前的策略是與被傳遞到我的地圖由DataFrame.javaRDD().map(...)
調用 S中RowFactory建設新秒,但我擔心這可能會產生不必要的費用。
所以我想知道是不是創建新的 s,我可以通過追加新的字段來擴展現有的。 接口似乎不允許這樣做。
我有一個DataFrame
,我想通過一個新列進行擴展。從創建一個新的DateFrame
s解釋here。將列附加到Spark中的行中
我目前的策略是與被傳遞到我的地圖由DataFrame.javaRDD().map(...)
調用 S中RowFactory建設新秒,但我擔心這可能會產生不必要的費用。
所以我想知道是不是創建新的 s,我可以通過追加新的字段來擴展現有的。 接口似乎不允許這樣做。
由於@Sachin賈納尼提到在評論您不能修改行(它是不可變的),但你可以使用的withColumn
-function列追加到DataFrame
。下面的代碼將例如添加一列與「文本」列中找到的字符串的長度:
val stringLength = udf[Int, String](s => s.length)
val df2 = df1.withColumn("text_length", stringLength(df1("text")))
希望這可以幫助。
謝謝,這是非常接近我想要的,但我的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
我認爲你不能修改,因爲它是不可改變的 –