我有一个分割的镶木地板。它按日期进行分区,如下所示:
/server/my_dataset/dt=2021-08-02
/server/my_dataset/dt=2021-08-01
/server/my_dataset/dt=2021-07-31
...它很大,所以我当时不想读它,我只需要8月的部分,所以我使用:
spark.read.parquet("/server/my_dataset/dt=2021-08*")它工作得很好。然而,我不得不从直接读取镶木面板转移到从相应的hive表中读取。类似于:
spark.read.table("schema.my_dataset")但是,我希望保持只读取数据的某些分区的相同逻辑。有没有办法做到这一点?
发布于 2021-08-27 12:48:34
尝试使用filter和like运算符。
Example:
spark.read.table("schema.my_dataset").filter(col("dt").like("2021-08%"))UPDATE:
您可以将所有的8月分区值放入一个变量中,然后使用filter query with in语句。
Example:
#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:
lst=[1,2]
df.filter(col("dt").isin(*lst)).show()https://stackoverflow.com/questions/68952847
复制相似问题