首页 > 解决方案 > 有什么方法可以处理pyspark中的时间吗?

问题描述

我有一个包含 6 个字符的字符串,应该作为 TIME 数据类型加载到 SQL Server 中。但是 spark 没有任何时间数据类型。我尝试了几种方法,但数据类型没有在时间戳中返回。

我正在将数据作为字符串读取并将其转换为时间戳,然后最终尝试提取时间值,但它再次将值作为字符串返回。

df.select('time_col').withColumn("time_col",to_timestamp(col("time_col"),"HHmmss").cast(TimestampType())).withColumn("tim2", date_format(col("time_col"), "HHmmss")).printSchema()

root
|-- time_col: timestamp (nullable = true)
|-- tim2: string (nullable = true)

数据看起来像这样,但数据类型不同。

df.select('time_col').withColumn("time_col",to_timestamp(col("time_col"),"HHmmss").cast(TimestampType())).withColumn("tim2", date_format(col("time_col"), "HHmmss")).show(5)

+-------------------+------+
|           time_col|  tim2|
+-------------------+------+
|1970-01-01 14:44:51|144451|
|1970-01-01 14:48:37|144837|
|1970-01-01 14:46:10|144610|
|1970-01-01 11:46:39|114639|
|1970-01-01 17:44:33|174433|
+-------------------+------+

有什么方法可以在时间戳列或与 SQL Server 的 TIME 数据类型等效的列中获取 tim2 列?

标签: apache-sparkpysparkdatabricks

解决方案


在我的情况下,我曾经在 spark 中转换为时间戳,然后在发送到 SQL 服务器之前将其设为字符串。它对我来说很好。


推荐阅读