【问题标题】:Convert a Spark dataframe column from string to date将 Spark 数据框列从字符串转换为日期
【发布时间】:2016-12-25 11:44:00
【问题描述】:

我有一个从 sql 上下文构建的 spark 数据框。 我使用DATE_FORMAT(time, 'Y/M/d HH:00:00') AS time_hourly 截断了日期时间字段

现在列类型是字符串。如何将字符串 dataFrame 列转换为 datetime 类型?

【问题讨论】:

    标签: apache-spark spark-dataframe


    【解决方案1】:

    您可以使用 trunc(column date, format) 来避免丢失日期数据类型。 有一个 to_date 函数可以将字符串转换为日期

    【讨论】:

    • 我尝试了 `trunc(column date, format)`,它在 format 为 "MONTH" 时有效,但当 format 为 "HOUR" 时返回 null > - 我该怎么办?
    • 能否发布您正在尝试的示例数据
    • 我认为这对你有用 myData.selectExpr("timestamp(from_unixtime(unix_timestamp(date_format(ts,'Y/M/d HH:00:00'),'Y/M/d HH:mm:ss')) ) as dt_formatted ") 结果:====== root |-- dt_formatted: timestamp (nullable = true) +---------------- ----+ | dt_formatted| +--------------------+ |2015-12-27 05:00:...| +--------------------+
    • 谢谢哈里!我按照您的建议截断了 sql 查询中的时间。
    【解决方案2】:

    假设 df 是您的数据框并且要转换的列名是 time_hourly 您可以尝试以下方法:

    from pyspark.sql.types import DateType
    df.select(df.time_hourly.cast(DateType()).alias('datetime'))
    

    更多信息请见:

    1) "cast()" 的文档 https://spark.apache.org/docs/1.6.2/api/python/pyspark.sql.html

    2) 数据类型的文档 https://spark.apache.org/docs/1.6.2/api/python/_modules/pyspark/sql/types.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-21
      • 2021-12-30
      • 2020-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-03
      相关资源
      最近更新 更多