【问题标题】:How to save time info without date in pyspark?如何在pyspark中保存没有日期的时间信息?
【发布时间】:2021-09-03 13:29:25
【问题描述】:

我正在尝试在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 函数,因为它只会创建一个字符串。

【问题讨论】:

  • 从你的代码中,你正在将你的“字符串”(日期+时间)转换成你想要的时间的时间戳。我可以想到几种方法,其中一种是只选择与时间相关的字符......即时间戳[-8:],或者如果你的日期时间是其他数据类型......你看过日期时间库?

标签: python pyspark timestamp


【解决方案1】:

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|
#+------------+

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-05-19
    • 1970-01-01
    • 2013-11-19
    • 1970-01-01
    • 2014-07-05
    • 1970-01-01
    • 1970-01-01
    • 2012-08-23
    相关资源
    最近更新 更多