我有一個帶有列時間戳的 Spark 資料框。我需要在此列中以 unix_timestamp 格式創建 event_hour。當前的問題是時間戳采用 unix_timestamp 格式,粒度為毫秒,而我需要小時粒度。
Current values for timestamp:
1653192037
1653192026
1653192025
1653192024
1653192023
1653192022
Expected values:
1653192000
1653195600
1653199200
1653202800
如何使用 Spark 函式實作這一點?我已經嘗試將其轉換為時間戳,然后對其進行格式化,但結果為 null:
inputDf
.withColumn("event_hour", unix_timestamp(date_format($"timestamp".cast(TimestampType), "MM-dd-yyyy HH")))
uj5u.com熱心網友回復:
一種(不是很明確但)有效的方法是使用 3600 的模運算(如 3600 秒 = 1 小時):
timestamp_hour = timestamp_second - (timestamp_second % 3600)
這假設您將資料作為數字處理。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/480820.html
上一篇:如何在Apache中將<If><ElseIf><Else>與自定義變數一起使用?
下一篇:在Spark中使用FileUtil.copy將檔案從HDFS上傳到S3導致DiskErrorException:Directoryisnotwritable錯誤?
