【发布时间】:2020-10-27 13:32:30
【问题描述】:
我有一个数据框
+--------------+-----------------+
|tracking_time | current_time |
+--------------+-----------------+
| 1582037407 |1594110202934 |
| 1582037587 |1594110202934 |
+--------------+-----------------+
我想计算 tracking_time 和 current_time 之间的日期差异,就像这个计算一样。
long diffDate = (now.getTime() - tracking_date.getTime()) / (60 * 1000) % 60;
请注意,unix_timestamp() 和 current_date 中的跟踪时间在“currentTimeMillis() 中。
我在 spark 上使用以下代码:
dataframe.withColumn("diffDate",col("current_time").minus( col("tracking_time")).divide(60*1000).mod(60));
但我得到以下输出
+---------------+----------------+-----------------+
|tracking_time | current_time | diffDate |
+--------------+-----------------+-----------------+
| 1582037407 |1594110202934 |56.09211666509509|
| 1582037587 |1594110202934 |56.089116666466 |
+--------------+-----------------+-----------------+
通常 mod 应该返回整个部门的其余部分。但我得到一个逗号。 可能是我写错了。
我需要你的帮助。
谢谢。
【问题讨论】:
-
tracking_time和current_time的值看起来是否与您接近相似?它们不应该,因为tracking_time以 秒 为单位,current_time以 毫秒 为单位,因此将它们彼此相减确实会导致 毫无意义 价值。您需要在减去之前将current_time除以 1000! -
1582037407是2020-02-18T14:50:07Z和1594110202934是2020-07-07T08:23:22.934Z,即它们相隔 139 天 17 小时 33 分 15 秒(忽略 DST),那么计算 33 的意义何在分钟? -
@Andreas 感谢您的回复。我不明白你能解释更多吗?
-
30000 毫秒减去 25 秒是多少?
30000 - 25 = 29975但 29975 是一个毫无意义的数字。它没有任何意义,因为它既不是秒也不是毫秒。 ---30000 / 1000 - 25 = 30 - 25 = 5是一个有用的值,即 5 秒,但这不是你在做什么。 ---seconds / 60 % 60是小时/分钟/秒时间值的分钟部分。当您的值相差 139 天 时,知道分钟 part 是 33 的目的是什么? IE。对于139d 17h 33m 15s,值 33 用处不大。
标签: java dataframe apache-spark mod