Как скопировать файлы из нескольких исходных папок в целевые папки в azure хранилище озера данных, поколение 2 - PullRequest
1 голос
/ 30 января 2020

У меня есть несколько папок в ADLS, и в каждой папке есть дельта-файлы. Моя цель - преобразовать все дельта-файлы в формат паркета и поместить их в другую папку. И я хочу сохранить те же имена папок в target, что и в source.

Я написал скрипт, который принимает имя папки в качестве параметра, затем преобразует все дельта-файлы в этой папке в паркет и перемещается в целевой каталог с тем же именем, что и исходная папка. Ниже приведен фрагмент кода.

var loadDelta = spark.read.format("delta").load(deltaPath)
loadDelta.write.format("parquet").mode(SaveMode.Overwrite).save(parquetPath)

Здесь я должен определить deltaPath (исходная папка) и parquetPath (целевая папка) для каждой папки ... что неэффективно, если мне нужно увеличить его до 100 с. Мне было интересно, если есть способ, которым файлы всех папок, присутствующих в исходном каталоге, могут быть преобразованы с использованием кода и поместить в целевой каталог в аналогичной структуре папок.

Например, это исходный каталог, в котором есть 4 папки / таблицы. В каждой папке есть дельта-файлы. SourceDirectory

Цель состоит в том, чтобы создать те же 4 имени папки в тестовом каталоге (целевом) без указания какого-либо указанного c имени папки в качестве входного и использовать код преобразования для преобразования файлов в формат паркета.

DesiredTargetDirectory

Как процесс преобразования может выполняться рекурсивно. Любые предложения / предложения будут оценены.

1 Ответ

1 голос
/ 30 января 2020

Вы можете создать конвейер DataFactory с действиями copyData. Вам просто нужно определить цель папок данных в исходном вводе (в конфигурациях действий copyData) и папки назначения данных в Sink в формате Parquet (в конфигах действий copyData).

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