Spark - Как получить последний час в пути S3?

Я использую блокнот Databricks со Spark и Scala для чтения данных из S3 в DataFrame:

myDf = spark.read.parquet(s"s3a://data/metrics/*/*/*/). где * подстановочных знака представляют год/месяц/день.

Или я просто жестко запрограммировал это: myDf = spark.read.parquet(s"s3a://data/metrics/2018/05/20/)

Теперь я хочу добавить параметр часа сразу после дня. Идея состоит в том, чтобы получить данные от S3 за последний доступный час.

Если я сделаю myDf = spark.read.parquet(s"s3a://data/metrics/2018/05/20/*), то получу данные за все часы 20 мая.

Как можно добиться этого в записной книжке Databricks без жесткого кодирования часа?


person samba    schedule 03.10.2018    source источник


Ответы (1)


Использовать функцию даты и времени

from datetime import datetime, timedelta

latest_hour = datetime.now() - timedelta(hours = 1)

Вы также можете разделить их по годам, месяцам, дням, часам

latest_hour.year
latest_hour.month
latest_hour.day
latest_hour.hour
person justcode    schedule 04.10.2018
comment
правильно ли я понимаю, что затем я должен передать вычисляемый latest_hour вместо подстановочного знака, такого как s"s3a://data/metrics/2018/05/20/latest_hour ? - person samba; 04.10.2018
comment
как я понимаю, timedelta из Python datetime lib. Но я использую Scala. Знаете ли вы какой-либо подобный подход со Scala? - person samba; 04.10.2018
comment
Ах да, вот код для реализации Scala val now = Calendar.getInstance() val currentHour = now.get(Calendar.HOUR_OF_DAY) - person justcode; 04.10.2018
comment
Получает последний час текущего дня. Однако в пути к S3 может быть другая дата, например 2018/05/20/, как показано выше. Как получить последний час (23) дня из пути? - person samba; 04.10.2018
comment
Я понимаю, что вы имеете в виду. Я думаю, что неправильно понял ваш вопрос. Что вам нужно сделать, так это получить последний час на вашем пути s3. Разберите этот путь, чтобы получить час. Затем добавьте +1 к этому часу. - person justcode; 04.10.2018
comment
не могли бы вы привести пример того, как получить последний час в пути s3? - person samba; 04.10.2018