首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在pyspark中读取已分区的配置子母表,而不是在拼接中

在pyspark中读取已分区的配置子母表,而不是在拼接中
EN

Stack Overflow用户
提问于 2021-08-27 11:43:20
回答 1查看 23关注 0票数 0

我有一个分割的镶木地板。它按日期进行分区,如下所示:

代码语言:javascript
运行
复制
/server/my_dataset/dt=2021-08-02
/server/my_dataset/dt=2021-08-01
/server/my_dataset/dt=2021-07-31
...

它很大,所以我当时不想读它,我只需要8月的部分,所以我使用:

代码语言:javascript
运行
复制
spark.read.parquet("/server/my_dataset/dt=2021-08*")

它工作得很好。然而,我不得不从直接读取镶木面板转移到从相应的hive表中读取。类似于:

代码语言:javascript
运行
复制
spark.read.table("schema.my_dataset")

但是,我希望保持只读取数据的某些分区的相同逻辑。有没有办法做到这一点?

EN

回答 1

Stack Overflow用户

发布于 2021-08-27 12:48:34

尝试使用filterlike运算符。

Example:

代码语言:javascript
运行
复制
spark.read.table("schema.my_dataset").filter(col("dt").like("2021-08%"))

UPDATE:

您可以将所有的8月分区值放入一个变量中,然后使用filter query with in语句。

Example:

代码语言:javascript
运行
复制
#get the partition values into variable and filter required
val lst=df.select("dt").distinct.collect().map(x => x(0).toString)

#then use isin function to filter only required partitions
df.filter(col("dt").isin(lst:_*)).show()

For python sample code:

代码语言:javascript
运行
复制
lst=[1,2]
df.filter(col("dt").isin(*lst)).show()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68952847

复制
相关文章

相似问题

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