在 pyspark 中的 datetime64 和 datetime 之间转换
Posted
技术标签:
【中文标题】在 pyspark 中的 datetime64 和 datetime 之间转换【英文标题】:Converting between datetime64 and datetime in pyspark 【发布时间】:2020-06-05 11:28:18 【问题描述】:我正在尝试将我的 spark 数据框中的日期列从 date
转换为 np.datetime64
,我该如何实现?
# this snippet convert string to date format
df1 = df.withColumn("data_date",to_date(col("data_date"),"yyyy-MM-dd"))
【问题讨论】:
【参考方案1】:正如您在 spark https://spark.apache.org/docs/latest/sql-reference.html 的文档中看到的那样,time 变量支持的唯一类型是 TimestampType
和 DateType
。 Spark 不知道如何处理 np.datetime64
类型(想想 spark 对 numpy 有什么了解?-什么都没有)。
您已经将字符串转换为 spark 知道的日期格式。我的建议是,从那里你应该以date
的身份使用它,这就是 spark 的理解方式,不用担心有大量的内置函数来处理这种类型。你可以在 numpy 中使用 np.datetime64 做的任何事情都可以在 spark 中使用。更多细节请看这篇文章:https://mungingdata.com/apache-spark/dates-times/
【讨论】:
【参考方案2】:你为什么要这样做。 spark 不支持数据类型 datetime64 并且提供创建用户定义的数据类型不再可用。可能您可以创建一个 pandas Df 然后进行此转换。 Spark 不支持它
【讨论】:
以上是关于在 pyspark 中的 datetime64 和 datetime 之间转换的主要内容,如果未能解决你的问题,请参考以下文章
在DateTime中,仅使用64位中的62位。负值不在规范中。我如何表示BC的日期?
在 datetime、Timestamp 和 datetime64 之间转换