我有一个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
我认为你不能修改,因为它是不可改变的 –