pyspark - 将日期字符串转换为时间戳以按亚秒精度排序

标签 pyspark apache-spark-sql timestamp

我在 pySpark 数据框中有一列 date,日期格式如下:

2018-02-01T13:13:12.023507

我想将该列中的日期从字符串转换为时间戳(或者我可以根据日期对其进行排序的内容)。到目前为止,我已经尝试了以下方法:

new_df = df.withColumn(
    'date', 
    unix_timestamp("date", "YYYY-MM-DD'T'hh:mm:ss.s").cast("double").cast("timestamp")
)

还有这个

new_df = df.withColumn(
    'date',
    from_unixtime(
        unix_timestamp(col(('date')), "yyyy-MM-dd'T'hh:mm:ss.SSS"), 
        "yyyy-MM-dd'T'HH:mm:ss.SSS"
    )
)

还有这个

df_new = df.withColumn(
    'date1',
    F.to_timestamp("date", "yyyy-dd-MM'T'hh:mm:ss.s")
)

我尝试了在其他类似问题中发现的所有内容,但到目前为止没有任何效果。我还尝试了一种不同的格式 yyyy-MM-dd'T'HH:mm:ss.ssssss 但没有成功。我错过了什么?

最佳答案

对于 Spark >= 2.2,unix_timestamp() 的替代方法是使用 to_timestamp():

from pyspark.sql.functions import col, to_timestamp

new_df = df.withColumn('converted_date',to_timestamp(col('date'), "yyyy-MM-dd'T'HH:mm:ss"))

关于pyspark - 将日期字符串转换为时间戳以按亚秒精度排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55518697/

相关文章:

GraphFrames 的 PySpark 异常

python - 如何在 PySpark ML 中创建自定义标记器

php - 无法在 mysql 中存储日期和时间戳值

PHP strtotime() "first monday february"如果 2 月 1 日是星期一,则返回第二个星期一

apache-spark - 将相同的函数应用于 Spark 数据帧行的所有字段

java - PostgreSQL、pgAdmin、Java : How to make them all UTC?

amazon-web-services - AWS Glue 自动创建作业

python - 使用 PySpark 以 orc 格式写入大型数据帧时如何避免 OOM 问题?

scala - 将每个 json 行转换为表

apache-spark - 如何向通过 Spark 创建的 View 添加注释