sql - PySpark Dataframe:按日期删除行
问题描述
我想将我的 spark 数据框减少到某个日期之后的日期,例如 2020-03-01。
通过 sql 加载数据为我提供了数据列的字符串,因此我在尝试通过数据比较删除行之前对其进行了更改。
不幸的是,我下面的方法导致一个空的df。
query = "select id, date , volume from "+ INPUT_DB + "." + INPUT_TABLE
sdf_monthly = spark.sql(query)
sdf_monthly.count()
>>>113683937
sdf_monthly=sdf_monthly.withColumn("date", F.to_date(F.unix_timestamp(sdf_monthly["date"],"YYYY-MM-DD").cast("timestamp")))
sdf_monthly_new =sdf_monthly.filter(sdf_monthly["date"] >= F.unix_timestamp(F.lit('2020-03-01')).cast('timestamp'))
sdf_monthly_new.count()
>>>0
解决方案
这可能是因为您正在将日期与 linux 时间戳进行比较。尝试:
sdf_monthly_new =sdf_monthly.filter(sdf_monthly["date"] >= F.to_date(F.unix_timestamp(F.lit('2020-03-01')).cast('timestamp')))
sdf_monthly_new.count()
推荐阅读
- python - 如何在所有其他子小部件和我的应用程序的父窗口之上显示我的子小部件?
- uwp - UWP 中外部放置的 UI 元素未触发指针释放事件
- javascript - Twitter Typeahead:如何在 DIV 中显示“未找到结果”消息?
- excel - 修复 Runtime 48 错误移动办公产品
- koa - 我想通过 koa/node.js 流式传输 ZIP 存档
- jquery - jquery如何延迟每个克隆视频的播放
- python - 如何使用多键字典在数据框中创建新列
- javascript - 使用 Promise 时向对象添加数据是线程安全的吗?
- php - PHP NetSSH2 命令在几分钟后掉线
- powershell - 调用命令不返回任何内容