python - 在 PySpark 中为镶木地板文件过滤日期时间范围和时区
问题描述
根据这里的建议,我想知道如何使用 PySpark 过滤带有时区的日期时间范围。
这是我的数据的样子:
美国广播公司,2020-06-22T19:17:16.428+0000
DEF,2020-06-22T19:17:16.435+0000
JKL,2020-06-22T19:17:16.468+0000
移动网络运营商,2020-06-22T19:17:16.480+0000
XYZ,2020-06-22T19:17:16.495+0000
在这种情况下,我只想提取那些毫秒数在 400-450 之间的记录。
试过这个但没有用:
import pyspark.sql.functions as func
df = df.select(func.to_date(df.UpdatedOn).alias("time"))
sf = df.filter(df.time > '2020-06-22T19:17:16.400').filter(df.time < '2020-06-22T19:17:16.451')
解决方案
当你使用to_date
它会截断小时,所以你必须使用to_timestamp
和比较它。
df.withColumn('date', to_timestamp('date')) \
.filter("date between to_timestamp('2020-06-22T19:17:16.400') and to_timestamp('2020-06-22T19:17:16.451')") \
.show(10, False)
+---+-----------------------+
|id |date |
+---+-----------------------+
|ABC|2020-06-22 19:17:16.428|
|DEF|2020-06-22 19:17:16.435|
+---+-----------------------+
推荐阅读
- blockchain - 安装后启动 Ganache 时如何修复错误
- amazon-web-services - AWS 云目录:为什么在为 listIndex 请求应用范围时出现错误?
- css - CSS 变量和 SASS 函数
- sql - PostgreSQL 中获取最新(最近的时间戳记录)的最佳数据库表设计
- amazon-ecs - Airflow - 如何从 ecs 运营商推送 xcom?
- javascript - 如何将 $watch 用于 getBoundingClientRect()
- android - 如何防止 OneLogin Protect android app v4.3.0 崩溃?
- python - 多标签数据的计数图
- excel - 从特定开始日期起每周计数 1-53 的计算列
- java - 查找给定元素的所有依赖项集