【发布时间】:2019-10-17 21:51:19
【问题描述】:
我在 Azure 上使用 Databricks/Spark。我想删除存储在 blob 中的超过 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(...) 删除文件,这个操作似乎也很慢。
关于在 Spark/Databricks 上下文中更快地删除 Azure blob 中的文件的任何提示?
还有相关的帖子here和here。但是,前者没有指定上下文/环境(引用的链接是针对 Scala 的,这些方法在 PySpark 中的 Spark 上下文中不存在),后者想要实现并行删除但没有说明解决方案是否需要与火花。
【问题讨论】:
-
使用 spark 这样做可能不是最好的解决方案。只需在您的文件夹上添加
dbutils.rm。
标签: azure apache-spark pyspark azure-blob-storage azure-databricks