Python Databricks列出Azure Blob存储中的所有Blob
我已经在Databricks中安装了一个Blob存储帐户,可以很好地访问它,所以我知道它是有效的 我想做的是列出给定路径中所有文件的名称。。目前,我正在与以下人员合作:Python Databricks列出Azure Blob存储中的所有Blob,python,azure,azure-blob-storage,azure-databricks,Python,Azure,Azure Blob Storage,Azure Databricks,我已经在Databricks中安装了一个Blob存储帐户,可以很好地访问它,所以我知道它是有效的 我想做的是列出给定路径中所有文件的名称。。目前,我正在与以下人员合作: list = dbutils.fs.ls('dbfs:/mnt/myName/Path/To/Files/2019/03/01') df = spark.createDataFrame(list).select('name') 但我的问题是,它的速度异常缓慢。。由于该位置大约有160000个blob(storage explo
list = dbutils.fs.ls('dbfs:/mnt/myName/Path/To/Files/2019/03/01')
df = spark.createDataFrame(list).select('name')
但我的问题是,它的速度异常缓慢。。由于该位置大约有160000个blob(storage explorer显示为~1016106592字节,即1Gb!)
这肯定不能把所有这些数据都拉下来,我需要/想要的只是文件名
blob存储是我的瓶颈,还是我可以(以某种方式)让Databricks并行执行命令
谢谢。根据我的经验,并基于我对Azure Blob存储的理解,SDK中的所有操作或Azure Blob存储上的其他操作都将转换为REST API调用。因此,您的
dbutils.fs.ls
调用实际上是在
水滴容器
因此,我确信,通过将Blob列表的XML
响应体的amount-size数据传输到Blob存储上,将Blob名称提取到list
变量,即使大约有160000个Blob,代码的性能瓶颈也会受到影响
同时,所有blob名称将被包装在XML响应的多个切片中,每个切片都有一个MaxResults
限制,获得下一个切片取决于上一个切片的NextMarker
值。上面的原因就是为什么列出BLOB比较慢,而且不能并行
我对提高加载blob列表效率的建议是提前缓存列表blob的结果,例如生成一个blob来逐行写入blob列表。考虑到实时更新,当发生blob创建事件时,您可以尝试使用将blob name记录添加到Append blob中。感谢您的合理响应,这是一个不错的主意。。会让它转一转@如果对你有帮助,你能帮我标记一下吗?谢谢。最后我实际使用了python blob存储SDK。。这对于我的用例来说已经足够快了:D