如何在pyspark中保存没有日期的时间信息?

How to save time info without date in pyspark?

我正在尝试在 pyspark 中保存时间信息(例如小时、分钟、秒)而不需要其他日期信息。有没有办法做到这一点?我可以使用时间戳,但这需要将日期信息填写为一些标准的无意义日期。是否有一种仅用于时间信息的类型?

示例:

from pyspark.sql import functions as F

df = spark.createDataFrame([('1997-02-28 10:30:00',)], ['t'])
df = (
    df
    .select(F.to_timestamp(df.t).alias('timestamp'))
    .withColumn('time_col', F.some_function_i_dont_know(F.col('timestamp')))
)

请注意,我不想使用 date_format 函数,因为它只会创建一个字符串。

spark 中没有时间类型,但您可以使用 int(或)string.

Example:

spark.sql("select int(date_format(current_Timestamp(),'HHmmssSSS'))as time").\
printSchema()
#root
# |-- time: integer (nullable = true)



spark.sql("select int(date_format(current_Timestamp(),'HHmmssSSS')) as time").\
show()
#+---------+
#|     time|
#+---------+
#|130250300|
#+---------+

#as string
spark.sql("select (date_format(current_Timestamp(),'HH:mm:ss.SSS')) as time").show()
#+------------+
#|        time|
#+------------+
#|13:04:08.527|
#+------------+