pyspark - 当其中一些在 pyspark 中为空时发现时间戳的差异
问题描述
我在 pyspark 数据框中有两个时间戳列,如下所示:
+--------------------+--------------------+
| TIME_STAMP| TIME_STAMP2|
+--------------------+--------------------+
|2020-01-03 12:58:...| null|
|2020-01-03 12:59:...| null|
|2020-01-03 13:01:...| null|
|2020-01-03 13:02:...| null|
|2020-01-03 13:04:...| null|
|2020-01-03 13:05:...| null|
|2020-01-03 13:07:...| null|
|2020-01-03 13:08:...|2020-01-03 12:58:...|
|2020-01-03 13:10:...|2020-01-03 12:59:...|
|2020-01-03 13:11:...|2020-01-03 13:01:...|
|2020-01-03 13:13:...|2020-01-03 13:02:...|
|2020-01-03 13:14:...|2020-01-03 13:04:...|
|2020-01-03 13:16:...|2020-01-03 13:05:...|
|2020-01-03 13:17:...|2020-01-03 13:07:...|
|2020-01-03 13:19:...|2020-01-03 13:08:...|
|2020-01-03 13:20:...|2020-01-03 13:10:...|
|2020-01-03 13:22:...|2020-01-03 13:11:...|
|2020-01-03 13:23:...|2020-01-03 13:13:...|
|2020-01-03 13:24:...|2020-01-03 13:14:...|
|2020-01-03 13:26:...|2020-01-03 13:16:...|
+--------------------+--------------------+
我想找出区别,但是,如果其中一个值是null
,我会收到错误消息。有没有办法绕过这个?这是我得到的错误:
遇到错误:“由于数据类型不匹配,无法解析'(
TIME_STAMP
- )':'( - )' 需要(数字或日历间隔)类型,而不是时间戳;;TIME_STAMP2
TIME_STAMP
TIME_STAMP2
解决方案
您可以将时间戳值转换为 long 并减去它们。您将在几秒钟内获得差异:
from pyspark.sql import functions as f
df.withColumn('diff_in_seconds', f.col('TIME_STAMP').cast('long') - f.col('TIME_STAMP2').cast('long'))
df.show(10, False)
请注意,如果任何值为“null”,则结果也将为“null”。
推荐阅读
- javascript - 在焦点上异步填充数据列表选项(获取)
- graphql - 我可以更改 Hasura Graphql 端点吗?
- kubernetes - 用于 Statefulset 的 Kubernetes Admission webhook
- python - Python绘制具有不同数量元素的列表列表
- python - python threading:当多个线程之一失败时退出程序
- python - 如何在保持原始链表不变的情况下反转链表
- jquery - Django Ajax 多个文件表单重定向到 Json
- reactjs - React.js,改进从表单输入生成对象
- oracle - 你能告诉我一些建议Oracle错误吗?
- java - Google Cloud Vision OCR 在 Google Cloud Shell 本地主机上返回“错误图像数据”