使用Spark/Java获取每行数据帧的当前时间戳

使用Spark/Java获取每行数据帧的当前时间戳,java,dataframe,apache-spark,current-time,Java,Dataframe,Apache Spark,Current Time,我想得到每一行的当前时间戳 我使用以下代码 dataframe.withColumn("current_date",current_timestamp()); 但是当前的_timestamp()是在序列化之前计算的,所以我总是得到相同的日期 如何计算每行数据帧的当前_timestamp() 我需要你的帮助 谢谢。即使直接python表达式也被视为序列化时间常数,下面的代码也为每一行提供相同的时间值 dataframe.withColumn("current_dat

我想得到每一行的当前时间戳

我使用以下代码

dataframe.withColumn("current_date",current_timestamp());
但是当前的_timestamp()是在序列化之前计算的,所以我总是得到相同的日期

如何计算每行数据帧的当前_timestamp()

我需要你的帮助


谢谢。

即使直接python表达式也被视为序列化时间常数,下面的代码也为每一行提供相同的时间值

dataframe.withColumn("current_date", F.lit( time.time()))
但是为时间值创建一个UDF会使它在运行时解析时间值,如下所示

from pyspark.sql.functions import udf

def get_time():
    return time.time()

time_udf=udf(get_time)

dataframe.withColumn("current_date", time_udf())
希望这有帮助

试试这个-


df2.withColumn(“当前日期”,expr(“reflect('java.lang.System','currentTimeMillis'))
.show(假)
/**
* +-----+------+-------------+
*|等级|性别|当前|日期|
* +-----+------+-------------+
*| 1 | m | 1594137247|
*| 1 | m | 1594137247|
*| 1 | f | 1594137247|
*| 2 | f | 1594137247272|
*| 2 | f | 1594137247272|
*| 3 | m | 1594137247272|
*| 3 | m | 1594137247272|
* +-----+------+-------------+
*/
df2.withColumn(“当前日期”,expr(“reflect('java.time.LocalDateTime','now'))
.show(假)
/**
* +-----+------+-----------------------+
*|等级|性别|当前|日期|
* +-----+------+-----------------------+
*| 1 | m | 2020-07-07T21:24:07.377|
*| 1 | m | 2020-07-07T21:24:07.378|
*| 1 | f | 2020-07-07T21:24:07.378|
*| 2 | f | 2020-07-07T21:24:07.398|
*| 2 | f | 2020-07-07T21:24:07.398|
*| 3 | m | 2020-07-07T21:24:07.398|
*| 3 | m | 2020-07-07T21:24:07.398|
* +-----+------+-----------------------+
*/
//您可以将当前_日期转换为时间戳,方法是将其强制转换为“时间戳”