Spark 查找日期分区列的最大值

Ros*_*oss 5 apache-spark pyspark

我有一个镶木地板,按以下方式分区:

data
/batch_date=2020-01-20
/batch_date=2020-01-21
/batch_date=2020-01-22
/batch_date=2020-01-23
/batch_date=2020-01-24
Run Code Online (Sandbox Code Playgroud)

这里batch_date是分区列,是日期类型。

我只想读取最新日期分区中的数据,但作为消费者,我不知道最新值是什么。

我可以通过类似的方式使用一个简单的组

df.groupby().agg(max(col('batch_date'))).first()
Run Code Online (Sandbox Code Playgroud)

虽然这可行,但这是一种非常低效的方法,因为它涉及到 groupby。

我想知道我们是否可以以更有效的方式查询最新的分区。

谢谢。

san*_*wat 0

使用 Show Partitions 获取表的所有分区

show partitions TABLENAME
Run Code Online (Sandbox Code Playgroud)

输出会像

pt=2012.07.28.08/is_complete=1
pt=2012.07.28.09/is_complete=1
Run Code Online (Sandbox Code Playgroud)

我们可以使用以下查询从特定分区获取数据

select * from TABLENAME where pt='2012.07.28.10' and is_complete='1' limit 1;
Run Code Online (Sandbox Code Playgroud)

或者可以对其应用附加过滤器或分组依据。