scala - 如何按日期过滤 Spark 数据框?
问题描述
因此,我使用的 spark 数据框有一个字段“a”,其中包含时间戳数据,但由于写入数据的问题,有一个“字符串”字段。
我想在涉及“AND”和“OR”逻辑的数据帧上执行某个sql,如下所示:
select * from df where ((df.a>="2018-09-01" AND df.b==1) OR
(df.a>="2019-12-31" AND df.b==2))
所以,我在第一部分尝试了这个片段:
val new_df=df.filter((df("b")==1 &&
to_date(df("a")) >= to_date(lit("2018-09-01"))))
但我得到了错误:
<console>:25: error: type mismatch;
found : org.apache.spark.sql.Column
required: Boolean
val new_df=df.filter((df("b")==1 && to_date(df("start_date")) >= to_date(lit("2018-09-01"))))
我应该如何为我想要的整个逻辑执行此操作?
解决方案
使用lit
功能。
val new_df=df.filter(to_date(df("a")) >= to_date(lit("2018-09-01")))
val new_df=df.filter((df("b")=== lit(1) &&
to_date(df("a")) >= to_date(lit("2018-09-01"))))
推荐阅读
- ffmpeg - ffmpeg 在几秒钟后终止连接
- flutter - 我在使用 http post 请求运行颤振应用程序时收到错误(错误:XMLHttpRequest 错误。)
- node.js - 为什么 utf-8 在 node.js 中不适合我?
- html - : 使用 HTML 和 CSS 将文本元素悬停在图像上
- python - 从python中的列表中删除类似的字典
- php - Laravel 错误:file_put_contents 无法打开流:没有这样的文件或目录
- laravel - 当我尝试将文件保存到 storage/images 文件夹时,如何解决存储请求表单 laravel api 的 500 错误
- javascript - 当库 B 依赖于 A 时,为什么要安装库 A(react-router) 和 B (react-router-dom)?
- java - 从 Android Studio 中的网站获取完整加载的 HTML 内容
- javascript - React CSS 模块 - 一些 CSS 未应用(用于 NavLink 组件设置的“活动”类)