>“mm/dd/yyyy hh:mm:ss”格式)

mdfafbf1  于 2021-05-29  发布在  Spark
关注(0)|答案(2)|浏览(543)

我有下面的数据,我想添加ratingtimestamp列和格式化的时间戳。但我在这里面变空了。

+------+-------+------+----------+---------------+
|userId|movieId|rating| ts       |ratingtimestamp|
+------+-------+------+----------+---------------+
|     1|    296|   5.0|1147880044|           null|
|     1|    306|   3.5|1147868817|           null|

我使用的代码用于上述更改
val data2=data.withcolumn(“ratingtimestamp”,col(“ts”).cast(timestamptype))

l7mqbcuq

l7mqbcuq1#

我想,是吧 ts 属于类型 integer . 试着把它转换成 long 然后 timestamp 如下所示-

df.withColumn("ts_new", $"ts".cast("long").cast("timestamp"))

因为默认格式是- yyyy-MM-dd HH:mm:ss ,您将看到 show()yyyy-MM-dd HH:mm:ss 格式。
您可以将默认格式转换为新格式,如 MM/dd/yyyy HH:mm:ss 使用-

from_unixtime($"ts_new".cast("long"),"MM/dd/yyyy HH:mm:ss")
vaj7vani

vaj7vani2#

使用 from_unixtime & date_format 功能。

scala> val df = Seq(("1","296","5.0","1147880044","null"),("1","306","3.5","1147868817","null")).toDF("userId","movieId","rating","ts","ratingtimestamp")
df: org.apache.spark.sql.DataFrame = [userId: string, movieId: string ... 3 more fields]

scala> df.show(false)
+------+-------+------+----------+---------------+
|userId|movieId|rating|ts        |ratingtimestamp|
+------+-------+------+----------+---------------+
|1     |296    |5.0   |1147880044|null           |
|1     |306    |3.5   |1147868817|null           |
+------+-------+------+----------+---------------+
scala> df.withColumn("ratingtimestamp",date_format(from_unixtime($"ts"),"MM/dd/yyyy HH:mm:ss")).show(false)
+------+-------+------+----------+-------------------+
|userId|movieId|rating|ts        |ratingtimestamp    |
+------+-------+------+----------+-------------------+
|1     |296    |5.0   |1147880044|05/17/2006 21:04:04|
|1     |306    |3.5   |1147868817|05/17/2006 17:56:57|
+------+-------+------+----------+-------------------+
scala> df.withColumn("ratingtimestamp",from_unixtime($"ts","MM/dd/yyyy HH:mm:ss")).show(false)
+------+-------+------+----------+-------------------+
|userId|movieId|rating|ts        |ratingtimestamp    |
+------+-------+------+----------+-------------------+
|1     |296    |5.0   |1147880044|05/17/2006 21:04:04|
|1     |306    |3.5   |1147868817|05/17/2006 17:56:57|
+------+-------+------+----------+-------------------+

相关问题