Наилучшим способом было бы приведение поля к типу timestamp
с использованием функции Regexp_replace
для замены 'T'
.
Затем с использованием current_timestamp
функция, мы можем отфильтровать данные в кадре данных.
Example:
Spark-scala-1.6:
import sqlContext.implicits._
import org.apache.spark.sql.functions._
import org.apache.spark.sql.types._
//sample data
val df=sc.parallelize(Seq(("2019-10-17'T'18:30:45.123"),("2019-10-15'T'18:30:45.123"))).toDF("ts")
df.filter(regexp_replace('ts,"'T'"," ").cast("timestamp") > current_timestamp).show(false)
Result:
+-------------------------+
|ts |
+-------------------------+
|2019-10-17'T'18:30:45.123|
+-------------------------+
Если вам нужно заменить 'T'
, чтобы получить тип отметки времени для поля ts, используйте этот подход.
df.withColumn("ts",regexp_replace('ts,"'T'"," ").cast("timestamp"))
.filter('ts > current_timestamp).show(false)
Result:
+-----------------------+
|ts |
+-----------------------+
|2019-10-17 18:30:45.123|
+-----------------------+
Результат ts
поле будет иметь тип Timestamp
.