Ich habe eine DataFrame
mit Timestamp
Spalte, die ich als Date
Format konvertieren muss.Wie wird der Zeitstempel in das Datumsformat in DataFrame konvertiert?
Gibt es Spark SQL-Funktionen für diese?
Ich habe eine DataFrame
mit Timestamp
Spalte, die ich als Date
Format konvertieren muss.Wie wird der Zeitstempel in das Datumsformat in DataFrame konvertiert?
Gibt es Spark SQL-Funktionen für diese?
Sie können die Spalte Datum cast
:
Scala:
import org.apache.spark.sql.types.DateType
val newDF = df.withColumn("dateColumn", df("timestampColumn").cast(DateType))
Pyspark:
df = df.withColumn('dateColumn', df['timestampColumn'].cast('date'))
In SparkSQL:
SELECT CAST(the_ts AS DATE) AS the_date FROM the_table
die folgende Eingabe Stellen Sie sich vor:
val dataIn = spark.createDataFrame(Seq(
(1, "some data"),
(2, "more data")))
.toDF("id", "stuff")
.withColumn("ts", current_timestamp())
dataIn.printSchema
root
|-- id: integer (nullable = false)
|-- stuff: string (nullable = true)
|-- ts: timestamp (nullable = false)
können Sie die to_date Funktion:
val dataOut = dataIn.withColumn("date", to_date($"ts"))
dataOut.printSchema
root
|-- id: integer (nullable = false)
|-- stuff: string (nullable = true)
|-- ts: timestamp (nullable = false)
|-- date: date (nullable = false)
dataOut.show(false)
+---+---------+-----------------------+----------+
|id |stuff |ts |date |
+---+---------+-----------------------+----------+
|1 |some data|2017-11-21 16:37:15.828|2017-11-21|
|2 |more data|2017-11-21 16:37:15.828|2017-11-21|
+---+---------+-----------------------+----------+
ich empfehlen würde, diese Methoden über Gießen und schlicht SQL bevorzugen.
Dies ist nicht Spark SQL. – dslack
@dslack Diese Lösung verwendet Funktionen, die als Teil des Spark SQL-Pakets verfügbar sind, verwendet jedoch nicht die SQL-Sprache, sondern die robuste DataFrame-API mit SQL-ähnlichen Funktionen anstelle weniger zuverlässiger Strings mit tatsächlichen SQL-Abfragen . –
Was ist bei SQL-Abfragen weniger zuverlässig? – dslack