Spark时间戳问题,时间戳相同但不匹配

Posted

技术标签:

【中文标题】Spark时间戳问题,时间戳相同但不匹配【英文标题】:Spark Timestamp issue, same timestamp but mismatching 【发布时间】:2018-06-06 19:34:59 【问题描述】:

我正在将数据从源移动到我的存储桶中,并且需要编写一个用于数据验证的脚本。但是对于 Timestamp 数据类型,我面临一些奇怪的问题:我有两行包含两个相同的时间戳 [2017-06-08 17:50:02.422437]、[2017-06-08 17:50:02.422],因为第二个由于不同的文件系统配置而具有不同的格式 Spark 认为它们不同。有没有办法解决这个问题?比较理想的方式是在进行数据框比较时忽略该列。

【问题讨论】:

【参考方案1】:

您可以使用 unix_timestamp 并使用该数字进行比较。对于实际的日期要求,您可以使用 from_unixtime 转换为您需要的格式。不确定它是处理大量数据的有效方法...

 sqlContext.sql("Select unix_timestamp('2017-06-08 17:50:02.422'), unix_timestamp('2017-06-08 17:50:02.422437') ").show
+----------+----------+
| _c0| _c1|
+----------+----------+
|1496958602|1496958602|
+----------+----------+

【讨论】:

这个有道理,让我试试看效果如何。

以上是关于Spark时间戳问题,时间戳相同但不匹配的主要内容,如果未能解决你的问题,请参考以下文章

蜂巢时间戳不接受 Spark 时间戳类型

BigQuery - 根据匹配值或时间戳组合三个表

Spark:考虑夏令时将 GMT 时间戳转换为东部时间

如何以自定义格式加载带有时间戳的 CSV?

BigQuery 根据最接近的时间戳和匹配值组合表

Spark - HiveContext |错误的时间戳(减去 4 小时)