dataframe - 如何在 apache spark 中读取最新的分区
问题描述
我使用了包含查询的数据框
df : Dataframe =spark.sql(s"show Partitions $yourtablename")
现在分区的数量每天都在变化,因为它每天都在运行。
主要关心的是我需要获取最新的分区。
假设我获得了特定日期的随机表的分区,例如
year=2019/month=1/day=1
year=2019/month=1/day=10
year=2019/month=1/day=2
year=2019/month=1/day=21
year=2019/month=1/day=22
year=2019/month=1/day=23
year=2019/month=1/day=24
year=2019/month=1/day=25
year=2019/month=1/day=26
year=2019/month=2/day=27
year=2019/month=2/day=3
现在您可以看到它对分区进行排序以便之后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
这是表中的最后一个分区。
解决方案
您可以从中获取最大分区SHOW PARTITIONS
spark.sql("SHOW PARTITIONS my_database.my_table").select(max('partition)).show(false)
推荐阅读
- java - JHipster 5 和 Spring Boot 在启动时不加载 data.sql
- python-requests - 接收 404 响应表单 requests.get
- php - 如何在php中循环遍历具有共同模式的文件的多个块
- windows - GNUPG : GPG 无法打开 'c:\folder1' 没有这样的目录
- java - 在对话框中更改按钮文本颜色
- python - 是否可以在 re.sub 中使用 re.search 的结果作为变量?
- ios - 根据对象的类型对对象进行排序/隔离并创建/将其放在 arraylist 上
- sql - 如何使用 DB2 调试 BEGIN-END SQL 块?
- applescript - 邮件附件的 AppleScript 在 Mojave beta 10 中不起作用
- ios - iOS 上的 Vuforia - 如何抓取相机帧