Я пытаюсь написать общий c код, который всегда будет идентифицировать и получать доступ к последнему файлу паркета.
Я использую RStudio Server в кластере Databricks, который обращается к Azure Data Lake Storage , Я обычно извлекаю данные, используя пакет DBI, как показано ниже.
df <- dbGetQuery(sc, "select *
from parquet.`/folder1/folder2/file.parquet`")
Однако я столкнулся с путем, который представляет собой комбинацию года, месяца, дня и некоторого случайного значения alphanumeri c. Например, /folder1/2020/03/29/abc123.parquet
. Случайное значение alphanumeri c, являющееся именем файла, отличается для каждой даты, и обычно в день есть два файла.
Я могу обработать часть даты, используя today <- format(Sys.Date(), "%Y/%m/%d")
и передавая "сегодня" в запросе SQL. Но я не уверен, как определить имя файла и передать его. Я попытался использовать list.files(path = "/folder1/2020/03/29", full.names=TRUE,recursive=TRUE)
, но он вернул пустой символ. Кажется, это не работает на удаленном пути. Есть ли способ решить эту проблему?
PS. Если определить последнюю версию сложно, я могу согласиться на любой из двух файлов в папке с датами, например, выполнив max(filename)
. Важным моментом является написание обобщенного c кода, который сгенерирует для меня имя файла (и, в конечном счете, имя пути), против необходимости каждый раз искать ADLS для поиска правильного пути.