修改Spark DataFrame列

6

I would like to change the following dataframe:

--id--rating--timestamp--
-------------------------
| 0 | 5.0  |  231312231 |
| 1 | 3.0  |  192312311 | #Epoch time (seconds from 1 Thursday, 1 January 1970)
-------------------------

转换为以下数据框:

--id--rating--timestamp--
--------------------------
| 0 |  5.0  |  05        |
| 1 |  3.0  |  04        | #Month of year
--------------------------

我该怎么做?

2个回答

6

使用内置函数非常简单。

import org.apache.spark.sql.functions._;
import spark.implicits._
val newDF = dataset.withColumn("timestamp", month(from_unixtime('timestamp)));

请注意,DataFrames是不可变的,因此您可以创建新的DataFrame但不能修改。当然,您可以将此数据集分配给相同的变量。
注意事项2:DataFrame = Dataset [Row],这就是我使用两个名称的原因。

如果我想获取当前列,并通过每行添加一些值来更新该列的每行,应该怎么办? - Sundeep Pidugu

1
如果您来自Scala,您可以在Dataframe.selectDataframe.withClumn方法中使用sql.functions方法。对于您的情况,我认为month(e: Column): Column方法可以执行您想要的更改。它将是这样的:
import org.apache.spark.sql.functions.month
df.withColumn("timestamp", month("timestamp") as "month")

我相信在 JavaPythonR 中都有等效的方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接