Meilleur moyen de convertir un champ de chaîne en horodatage dans Spark

J'ai un fichier CSV dans lequel un champ datetime dans un format spécifique. Je ne peux pas l'importer directement dans mon Dataframe, parce qu'il faut un horodatage. J'ai donc l'importer en tant que chaîne et de le convertir en un Timestamp comme ce

import java.sql.Timestamp
import java.text.SimpleDateFormat
import java.util.Date
import org.apache.spark.sql.Row

def getTimestamp(x:Any) : Timestamp = {
    val format = new SimpleDateFormat("MM/dd/yyyy' 'HH:mm:ss")
    if (x.toString() == "") 
    return null
    else {
        val d = format.parse(x.toString());
        val t = new Timestamp(d.getTime());
        return t
    }
}

def convert(row : Row) : Row = {
    val d1 = getTimestamp(row(3))
    return Row(row(0),row(1),row(2),d1)
}

Est-il mieux, de manière plus concise à cela, le Dataframe de l'API ou de l'étincelle-sql? La méthode ci-dessus nécessite la création d'un EDR et à donner le schéma du Dataframe de nouveau.

source d'informationauteur user568109