Как прочитать последние N числа последних дней с текущей даты в паркете - PullRequest
1 голос
/ 24 февраля 2020

Я сохранил данные в хранилище в формате паркетного файла с столбцом разбиения по типу даты.

Я пытаюсь получить данные за последние N дней с текущей даты, используя scala spark.

Данные файла сохраняются, как показано ниже как путь к хранилищу.

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

Если я читаю все данные, это очень большое количество данных.

1 Ответ

3 голосов
/ 24 февраля 2020

Поскольку ваш набор данных правильно разделен с использованием формата паркета, вам просто нужно прочитать каталог 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 (по умолчанию)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...