在 AWS Glue / pyspark 中将纪元转换为日期时间

Convert Epoch to Datetime in AWS Glue / pyspark

我有一个正在使用 pyspark 在 AWS Glue 中处理的数据框,我的 df 中的一条消息如下所示:

{  
   "version":"0.0.1",
   "device_id":"df4c13ddddb1bb8fea9fe762",
   "session_id":"721cf47cf8408b30bc57743717",
   "session_start":1508450739332,
   "source_id":"5",
   "body":{  
      "message_id":"2e6d83c677a7b4f3683366d",
      "message_type":1,
      "message_time":1508450739332,
      "url":"http://sample_url/"
   },
   "partition_0":"2017",
   "partition_1":"10",
   "partition_2":"19",
   "partition_3":"22"
}

我正在尝试将 body.message_time(以毫秒为单位的纪元)转换为日期时间字段。我尝试了 from_unixtime 函数:

unnested_df.withColumn("messages_datetime", from_unixtime(unnested_df.body.message_time.divide(1000)).show()

给我这个错误:

TypeError: 'Column' object is not callable

我只是将该列传递给 from_unixtime 函数。知道如何解决这个问题吗?

谢谢

你得到一个异常,因为 Column 没有 divide 方法。使用 / 运算符:

unnested_df.withColumn("messages_datetime", from_unixtime(unnested_df.body.message_time / 1000)