所以我設法將年、月和日列合并為 1,然后將其與時間列合并。當我嘗試將其轉換為時間戳時,我得到了錯誤的時間戳。這是我嘗試過的代碼。
val df2 = df.withColumn("full_date", concat_ws("/", $"Month", $"Day", $"Year"))
// // df2.show()
val df3 = df2.withColumn("date_time", concat_ws(" ", $"full_date", $"TimeCST"))
// // df3.show()
val stamp = df3.withColumn("timestamp", unix_timestamp($"date_time", "M/d/yyyy h:mm a"))
stamp.show()
我收到 94668798,但它應該是 946752780。我嘗試轉換的示例日期是:1/1/2000 12:53 AM
uj5u.com熱心網友回復:
從檔案unix_timestamp:
使用默認時區和默認語言環境將 yyyy-MM-dd HH:mm:ss 格式的時間字串轉換為 Unix 時間戳(以秒為單位)。
換句話說,由于您的時間戳格式不包括時區,Spark 將時間視為在運行 Spark 的機器上配置的時區中。如果您想要不同時區的值,請先設定spark.sql.session.timeZone為正確的名稱:
spark.conf.set("spark.sql.session.timeZone", "Europe/Berlin")
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/377865.html
上一篇:案例類的Scala過濾串列
