Я использую Databricks / Spark в Azure. Я хочу удалить более 100 000 текстовых файлов, хранящихся в BLOB-объектах. Капля смонтирована. Мой код для удаления этих файлов в параллельном режиме с использованием Python (PySpark) выглядит следующим образом.
import os
# use dbutils to list all files
# very slow operation
text_files = ['/dbfs/mnt/myblob/myfolder/{}'.format(fi.name) for fi in dbutils.fs.ls('/dbfs/mnt/myblob/myfolder')]
# use spark context to parallelize list of text files
rdd = sc.parallelize(text_files)
# now delete files
# seems to be very slow as well when spark job kicks off
rdd.map(lambda p: os.remove(p)).count()
Обратите внимание, что я использую dbutils
для вывода списка файлов в смонтированном каталоге. Эта операция медленная. Также обратите внимание, что я использую Python os.remove(...)
для удаления файла, и эта операция также кажется медленной.
Какие-нибудь советы по более быстрому способу удаления файлов в BLOB-объекте Azure в контексте Spark / Databricks?
Есть также похожие посты здесь и здесь . Тем не менее, первый не определяет контекст / среду (ссылочные ссылки предназначены для Scala, и эти методы не существуют в контексте Spark в PySpark), а второй хочет реализовать параллельное удаление, но не говорит, должно ли решение быть с Спарк.