pyspark преобразует отметку времени в миллисекунду в отметку времени

#apache-spark #pyspark #apache-spark-sql #timestamp #aws-glue

#apache-spark #pyspark #apache-spark-sql #временная метка #aws-glue

Вопрос:

Я новичок в spark, и я хотел бы получить временные метки в моем DF.

фактические значения контрольных точек

1594976390070

и я хочу :

значения контрольных точек без мс

1594976390070 / 1000

На самом деле я использую этот фрагмент кода для приведения в качестве временной метки:

 # Casting dates as Timestamp
for d in dateFields:
    df= df.withColumn(d,checkpoint.cast(TimestampType()))
 

Интересно, как преобразовать ее в простую временную метку.

Ответ №1:

Разделите свой столбец на 1000 и используйте F.from_unixtime для преобразования в тип метки времени:

 import pyspark.sql.functions as F

for d in dateFields:
    df = df.withColumn(d,
        (checkpoint / F.lit(1000.)).cast('timestamp')
    )