在AWS Glue / pyspark中将Epoch转换为Datetime

时间:2017-11-02 19:28:57

标签: python apache-spark pyspark spark-dataframe aws-glue

我有一个数据框,我使用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函数。知道如何解决这个问题吗?

由于

1 个答案:

答案 0 :(得分:1)

您收到异常,因为Column没有divide方法。使用/运算符:

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