首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PySpark下推时间戳过滤器

PySpark下推时间戳过滤器
EN

Stack Overflow用户
提问于 2018-12-06 21:49:01
回答 1查看 159关注 0票数 0

我正在使用JDBC2.4版来读取一些带有Postgres驱动程序的PySpark。

代码语言:javascript
运行
复制
    df = spark.read.jdbc(url=data_base_url, table="tablename", properties=properties)

其中一列是时间戳列,我想像这样过滤它:

代码语言:javascript
运行
复制
    df_new_data = df.where(df.ts > last_datetime )

这样,过滤器被下推为SQL查询,但datetime格式不正确。所以我尝试了这种方法

代码语言:javascript
运行
复制
    df_new_data = df.where(df.ts > F.date_format( F.lit(last_datetime), "y-MM-dd'T'hh:mm:ss.SSS") )

但这样过滤器就不会再往下推了。

有人能解释一下为什么会这样吗?

EN

回答 1

Stack Overflow用户

发布于 2018-12-07 18:26:11

在从数据库表加载数据时,如果您想将查询下推到数据库并获得较少的结果行,而不是提供“表”,您可以提供“查询”并将结果作为DataFrame返回。这样,我们就可以利用数据库引擎来处理查询,并只将结果返回给Spark。

table参数标识要读取的JDBC表。在查询FROM子句中,您可以使用任何有效的内容。请注意,查询中必须提供别名。

代码语言:javascript
运行
复制
pushdown_query = "(select * from employees where emp_no < 10008) emp_alias"
df = spark.read.jdbc(url=jdbcUrl, table=pushdown_query, properties=connectionProperties)
df.show()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53652862

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档