Как составить список и удалить пустые папки в Azure Data Lake Store Gen1 - PullRequest
1 голос
/ 27 февраля 2020

Вопрос 1:

Есть ли способ перечисления и удаления пустых папок в Azure Data Lake Store Gen 1?

Сценарий:

Требуется периодически запустите задание для рекурсивного удаления всех пустых папок в папке root в нашем хранилище озера данных.

Пути к папкам не могут быть жестко запрограммированы, поскольку может быть 100 с пустых папок.

Вопрос 2:

Можем ли мы использовать фабрику данных или блоки данных для выполнения этой операции?

Спасибо.

Ответы [ 2 ]

0 голосов
/ 05 марта 2020

Отвечено в https://social.msdn.microsoft.com/Forums/en-US/526006aa-f378-4766-9aba-532223a44814/how-to-list-and-delete-empty-folders-on-azure-data-lake-store-gen1?forum=AzureDataLake

После установки в блоки данных и разрешения проблем с разрешениями, одно из возможных (python3) решений:

def recur (item ): good_to_delete_me = Истинное содержимое = dbutils.fs.ls (элемент) для i в содержимом: если нет i.isDir (): good_to_delete_me = False else: can_delete_child = recur (i.path) good_to_delete_me = good_to_delete_me и can_delete_child if test: can_delete_child = i.path dbutils.fs.rm (тест) вернуть good_to_delete_me

0 голосов
/ 03 марта 2020

Rinks.Я реализовал ваше требование с помощью GetMetadata Activity , If-Condition Activity, Для каждой операции и Delete Activity. Пожалуйста, посмотрите мои подробные шаги:

Шаг 1, я создал 2 пустых папки и 1 папка содержит один CSV-файл в пути root.

enter image description here

enter image description here

Шаг 2, создайте GetMetadata Activity в конвейере ADF и выведите childItems.

enter image description here

Шаг 3, л oop вывод по ForEach Activity: @activity('Get Metadata1').output.childItems

enter image description here

Общая структура например:

enter image description here

Шаг 4, Внутри действия ForEach, используйте другое действие GetMetaData и действие If-условие:

Установите каталог как @item().name

enter image description here

Установите выражение условия как @empty(activity('Get Metadata2').output.childItems)

Всего структура типа:

enter image description here

Шаг 5, установите Удалить операцию в качестве Сбой активности для каждой операции. Установите @item.name() в качестве каталога Удалить набор данных активности.

Результат теста, папки test2 и test3 будут удалены:

enter image description here

enter image description here

Любая проблема, пожалуйста, дайте мне знать.

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