Вы можете использовать pyspark.sql.functions.from_unixtime()
, что будет
Преобразует количество секунд из эпохи Unix (1970-01-01 00:00:00 UTC) в строкупредставляющая временную метку этого момента в текущем системном часовом поясе в заданном формате.
Похоже, что ваш Business_Date
нужно разделить на 1M, чтобы преобразовать в секунды.
Например:
from pyspark.sql.functions import from_unixtime, col
df = df.withColumn(
"Business_Date",
from_unixtime(col("Business_Date")/1000000).cast("timestamp")
)
df.show()
#+---------------------+----+
#|Business_Date |Code|
#+---------------------+----+
#|2018-10-09 20:00:00.0|BSD |
#|2018-10-09 20:00:00.0|BTN |
#|2018-10-09 20:00:00.0|BVI |
#|2018-10-09 20:00:00.0|BWP |
#|2018-10-09 20:00:00.0|BYB |
#+---------------------+----+
from_unixtime
возвращает строку, чтобы вы могли преобразовать результат в timestamp
.
Теперь новая схема:
df.printSchema()
#root
# |-- Business_Date: timestamp (nullable = true)
# |-- Code: string (nullable = true)