在 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 变量支持的唯一类型是 TimestampTypeDateType。 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 之间转换的主要内容,如果未能解决你的问题,请参考以下文章

如何根据pyspark中的条件组合dataFrame中的行

Pyspark:如何遍历数据框列?

在DateTime中,仅使用64位中的62位。负值不在规范中。我如何表示BC的日期?

在 datetime、Timestamp 和 datetime64 之间转换

无法将变量传递给 pyspark 中的 spark sql 查询

新创建的列在 pyspark 数据框中显示空值