各行の現在のタイムスタンプを取得したい。
次のコードを使用します
dataframe.withColumn("current_date",current_timestamp());
しかし、 current_timestamp() はシリアル化の前に評価されるため、常に同じ日付が取得されます。
データフレームの各行に対して current_timestamp() を評価するにはどうすればよいですか。
あなたの助けが必要です。
ありがとうございました。
各行の現在のタイムスタンプを取得したい。
次のコードを使用します
dataframe.withColumn("current_date",current_timestamp());
しかし、 current_timestamp() はシリアル化の前に評価されるため、常に同じ日付が取得されます。
データフレームの各行に対して current_timestamp() を評価するにはどうすればよいですか。
あなたの助けが必要です。
ありがとうございました。
これを試して -
df2.withColumn("current_date", expr("reflect('java.lang.System', 'currentTimeMillis')"))
.show(false)
/**
* +-----+------+-------------+
* |class|gender|current_date |
* +-----+------+-------------+
* |1 |m |1594137247247|
* |1 |m |1594137247247|
* |1 |f |1594137247247|
* |2 |f |1594137247272|
* |2 |f |1594137247272|
* |3 |m |1594137247272|
* |3 |m |1594137247272|
* +-----+------+-------------+
*/
df2.withColumn("current_date", expr("reflect('java.time.LocalDateTime', 'now')"))
.show(false)
/**
* +-----+------+-----------------------+
* |class|gender|current_date |
* +-----+------+-----------------------+
* |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|
* +-----+------+-----------------------+
*/
// you can convert current_date to timestamp by casting it to "timestamp"