【问题标题】:Convert an isodate string into date format in PySpark在 PySpark 中将 isodate 字符串转换为日期格式
【发布时间】:2020-12-27 18:38:15
【问题描述】:
我正在使用 PySpark 开发一个机器学习项目。我有很多记录,其中一个字段存储了从 MongoDB 获取的日期。此日期是一个字符串,但包含一个 isodate 格式的日期。
如何将其转换为 Apache Spark 允许的日期格式之一?如果可能,我需要转换包含此日期字段的整个列。
以下是 JSON 格式的此字段示例:
"date": "2020-11-09T07:27:57.078Z"
【问题讨论】:
标签:
python
date
apache-spark
pyspark
apache-spark-sql
【解决方案1】:
只需使用df.select(F.col('date').cast('timestamp')) 将该列转换为时间戳。如果您需要日期类型,请改为转换为日期。
import pyspark.sql.functions as F
df = spark.createDataFrame([['2020-11-09T07:27:57.078Z']]).toDF('date')
df.show()
+------------------------+
|date |
+------------------------+
|2020-11-09T07:27:57.078Z|
+------------------------+
>>> df.printSchema()
root
|-- date: string (nullable = true)
# cast to timestamp
df2 = df.select(F.col('date').cast('timestamp'))
>>> df2.printSchema()
root
|-- date: timestamp (nullable = true)
df2.show()
+-----------------------+
|date |
+-----------------------+
|2020-11-09 07:27:57.078|
+-----------------------+
# cast to date
df3 = df.select(F.col('date').cast('date'))
>>> df3.printSchema()
root
|-- date: date (nullable = true)
df3.show()
+----------+
| date|
+----------+
|2020-11-09|
+----------+