【发布时间】:2019-12-05 17:15:36
【问题描述】:
假设我们有一个目录结构/数据分区:
/foo/day=1/lots/of/other/stuff/
/foo/day=2/lots/of/other/stuff/
/foo/day=3/lots/of/other/stuff/
.
.
/foo/day=25/lots/of/other/stuff/
我只想读取最大增量为day的数据,这里是/foo/day=25/lots/of/other/stuff/。
如果day 是数据中的一列,我们可以执行以下操作:
spark.read.parquet("s3a://foo/day=*/")
.withColumn("latestDay",max(col("day")).over())
.filter(col("day")===col("latestDay"))
假设那一天不是专栏,你能提出更聪明的建议吗?
数据不是使用write.partitionBy("day") 或类似方法写入的。在我的情况下,子路径中的架构甚至不一定有意义地连贯。
也许有一条路径glob pattern 可以执行此操作或类似操作? 还是在性能方面等同于 define the day column 并希望进行谓词推送或类似优化?
【问题讨论】:
标签: apache-spark hdfs glob