【问题标题】:Pyspark - Create Timestamp from Date and Hour ColumnsPyspark - 从日期和小时列创建时间戳
【发布时间】:2021-10-21 23:28:11
【问题描述】:

我在 PySpark 数据框中有一个 Date 和一个 Hour 列。如何将它们合并在一起以获得Desired_Calculated_Result 列?

df1 = sqlContext.createDataFrame(
  [
     ('2021-10-20','1300', '2021-10-20 13:00:00.000+0000')
    ,('2021-10-20','1400', '2021-10-20 14:00:00.000+0000')
    ,('2021-10-20','1500', '2021-10-20 15:00:00.000+0000')
  ]
  ,['Date', 'Hour', 'Desired_Calculated_Result']
)

我也试过了:

df1.withColumn("TimeStamp", unix_timestamp(concat_ws(" ", df1.Date, df1.Hour), "yyyy-MM-dd HHmm").cast("timestamp")).show(). 

这将返回时间戳列中的所有空值

【问题讨论】:

    标签: python apache-spark pyspark


    【解决方案1】:
    from pyspark.sql.functions import concat, unix_timestamp
    
    df1\
      .withColumn("TimeStamp", unix_timestamp(concat(df1.Date, df1.Hour), "yyyy-MM-ddHHmm")\
      .cast("timestamp"))\
      .show()
    

    【讨论】:

    • org.apache.spark.SparkUpgradeException: 你可能会因为升级 Spark 3.0 得到不同的结果: Fail to parse '2020-01-01100'在新的解析器中。您可以将 spark.sql.legacy.timeParserPolicy 设置为 LEGACY 以恢复 Spark 3.0 之前的行为,或者设置为 CORRECTED 并将其视为无效的日期时间字符串。
    • 我也试过:df.withColumn("TimeStamp", unix_timestamp(concat_ws(" ", df.Date, df.Hour), "yyyy-MM-dd HHmm").cast("timestamp “))。节目()。这将返回时间戳列中的所有空值
    • 你试过了吗?spark.sql("set spark.sql.legacy.timeParserPolicy=LEGACY")
    猜你喜欢
    • 1970-01-01
    • 2022-08-22
    • 2021-03-11
    • 2014-11-26
    • 2022-12-10
    • 2018-12-14
    • 1970-01-01
    • 2020-02-01
    • 1970-01-01
    相关资源
    最近更新 更多