如何读取镶木地板中当前日期起的最后N天数

问题描述 投票:0回答:1

我已将数据以拼花文件格式保存在仓库中,并且按日期类型列进行了分区。

我尝试使用Scala Spark从当前日期获取最近N天的数据。

保存的文件数据如下,作为仓库路径。

Tespath/filename/dt=2020-02-01
Tespath/filename/dt=2020-02-02
...........
Tespath/filename/dt=2020-02-28

如果我读取所有数据,则是非常大量的数据。

scala apache-spark
1个回答
0
投票

由于使用镶木地板格式正确地对数据集进行了分区,因此您只需要读取目录Testpath/filename,并让Spark执行分区发现。

它将在您的架构中添加一个dt列,其路径名称为dt=<value>。此值可用于过滤您的数据集,Spark将通过分区修剪所有与您不匹配的目录来优化读取dt列上的谓词。您可以尝试这样的事情:

import spark.implicits._
import org.apache.spark.functions._

val df = spark.read.parquet("Testpath/filename/")
  .where($"dt" > date_sub(current_date(), N))

您需要确保spark.sql.parquet.filterPushdown设置为true(默认设置)

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.