当前位置: 首页 > 知识库问答 >
问题:

时间戳类型在Glue和Spark中的转换不兼容?

方寒
2023-03-14

我想使用spark sql(pyspark)从我的数据中运行一个简单的sql选择时间戳字段。但是,所有的时间戳字段都显示为1970-01-19 10:45:37.009。所以看起来我在Glue和Spark中的时间戳之间有一些转换不兼容。

但是当我运行spark.sql时,event_time列得到时间戳类型,但它并不有用,而且缺少精度。所以我得到这个=1970-01-19 10:45:37.009。当我在Athena中运行相同的sql查询时,timestamp字段看起来很好,所以我的模式在Glue中看起来是正确的。

有办法克服吗?我没有找到任何解决这个问题的spark.sql配置。

共有1个答案

淳于健
2023-03-14

由于格式不正确,您得到的是1970。请尝试下面的代码将long转换为UTC时间戳

from pyspark.sql import types as T
from pyspark.sql import functions as F
df = df.withColumn('timestamp_col_original', F.lit('1593938489000'))
df = df.withColumn('timestamp_col', (F.col('timestamp_col_original') / 1000).cast(T.TimestampType()))
df.show()

转换时:1593938489000我在下面

timestamp_col_original|      timestamp_col|
+----------------------+-------------------+
|         1593938489000|2020-07-05 08:41:29|
|         1593938489000|2020-07-05 08:41:29|
|         1593938489000|2020-07-05 08:41:29|
|         1593938489000|2020-07-05 08:41:29|
+----------------------+-------------------+
 类似资料:
  • 我找不到这个问题的解决方案,我正在从firebase获取数据,其中一个字段是时间戳,看起来像这样- Swift示例(作品): 我的飞镖尝试: 并且它返回的日期/时间是错误的。 更新:

  • 我想从Firestore获取会议并将其映射到以下模型中: 从Firestore获取文档,然后在iterable上调用< code>fromJson,但会引发一个异常: 当我进入生成的< code>meeting.g.dart时,就是这一行导致了错误 为了解决此问题,我尝试在模型中从 DateTime 更改为 Timestamp,但随后显示以下生成错误: 你能告诉我你如何解决这个问题吗?有没有另一种

  • 我正在开发一个带有MySQL数据库的Java应用程序,该数据库位于与我的服务器不同的时区,我正试图决定在我的数据库上使用DATETIME还是TIMESTAMP。 在阅读了诸如我应该使用字段'datetime'还是'TIMESTAMP'之类的问题,以及MySQL文档之后,我认为TIMESTAMP更适合我,因为它将值转换为UTC以存储,并返回到当前时区以进行检索。 此外,正如用户Jesper在本文中所

  • 我试图编译一个从SourceForge得到的仍在开发中的项目。这是它的地址:。https://sourceforge.net/p/groove/code/5475/tree/groove/trunk/我知道这个项目经过了很好的验证,它没有任何错误,但是当我要编译它的时候,我遇到了这个编译错误: 错误在这个文件的第370行:https://sourceforge.net/p/groove/code/

  • 我试着在这个网站上搜索类似的问题,但没有发现任何地方他们试图使用一个int数字来填充使用方法。

  • 问题内容: 解决的问题 外部设备正在计算并发送非标准的2小时轮班时间戳,这使我非常困惑,并启动了该线程。时区 不会影响自己的时间戳 ,时区仅在以人类可读形式进行转换时适用。 我在UTC时区有时间戳记(距离unix纪元的秒数​​),没有DST(夏令时)。 我想要使​​用DST的“欧洲/布拉格”时区中的时间戳(距Unix纪元的秒数​​)。 我曾经以为unix时间戳不受时区限制,时区仅影响将时间戳转换为