Existe-t-il un moyen de convertir une valeur de timestamp avec des nano secondes en timestamp dans spark. Je reçois l'entrée d'un fichier csv et la valeur de l'horodatage est de format 12-12-2015 14:09:36.992415+01:00
. Voici le code que j'ai essayé.
val date_raw_data = List((1, "12-12-2015 14:09:36.992415+01:00"))
val dateraw_df = sc.parallelize(date_raw_data).toDF("ID", "TIMESTAMP_VALUE")
val ts = unix_timestamp($"TIMESTAMP_VALUE", "MM-dd-yyyy HH:mm:ss.ffffffz").cast("double").cast("timestamp")
val date_df = dateraw_df.withColumn("TIMESTAMP_CONV", ts).show(false)
Le résultat est
+---+-----------------------+---------------------+
|ID |TIMESTAMP_VALUE |TIMESTAMP_CONV |
+---+-----------------------+---------------------+
|1 |12-12-2015 14:09:36.992|null |
+---+-----------------------+---------------------+
J'ai pu convertir un horodateur en millisecondes en utilisant le format MM-dd-yyyy HH:mm:ss.SSS
. Le problème vient des formats de nano seconde et de fuseau horaire.