Dataframe 如何读取apache spark中最新的分区

Dataframe 如何读取apache spark中最新的分区,dataframe,apache-spark-sql,rdd,natural-sort,Dataframe,Apache Spark Sql,Rdd,Natural Sort,我使用了一个包含查询的数据帧 df : Dataframe =spark.sql(s"show Partitions $yourtablename") 现在,分区的数量每天都在变化,因为它每天都在运行 主要的问题是我需要获取最新的分区 假设我得到某一天随机表的分区 像 现在您可以看到它对分区进行排序的功能,以便在day=1之后出现day=10。这就产生了一个问题,因为我需要获取最新的分区 我已经设法通过使用 val df =dff.orderby(col("partition").desc.l

我使用了一个包含查询的数据帧

df : Dataframe =spark.sql(s"show Partitions $yourtablename")
现在,分区的数量每天都在变化,因为它每天都在运行

主要的问题是我需要获取最新的分区

假设我得到某一天随机表的分区 像

现在您可以看到它对分区进行排序的功能,以便在
day=1
之后出现
day=10
。这就产生了一个问题,因为我需要获取最新的分区

我已经设法通过使用

val df =dff.orderby(col("partition").desc.limit(1)
但是这给了我tail-1分区,而不是最新的分区

如何从表中获取最新的分区,以克服hives排列分区的限制

假设在上面的例子中,我需要

 year=2019/month=2/day=27
而不是

year=2019/month=2/day=3

这是表中的最后一个分区。

我不会依赖位置依赖关系,但如果这样做,我至少会有年份=2019/月份=2/天=03

我将依靠分区修剪和通过SQL语句的SQL。我不确定你是否在使用兽人,拼花地板等,但分区修剪应该是一个爱好者

例如


另请参见您可以从
SHOW partitions

spark.sql("SHOW PARTITIONS my_database.my_table").select(max('partition)).show(false)

我将使用谓词下推的方式读取带有s“”的适当查询的分区。
 val df = sparkSession.sql(""" select max(partition_col)
                                 from randomtable 
                           """)

 val maxVal = df.first().getString(0) // this as sql reuslt is a DF
spark.sql("SHOW PARTITIONS my_database.my_table").select(max('partition)).show(false)