Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/290.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Databricks列出Azure Blob存储中的所有Blob_Python_Azure_Azure Blob Storage_Azure Databricks - Fatal编程技术网

Python Databricks列出Azure Blob存储中的所有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

我已经在Databricks中安装了一个Blob存储帐户,可以很好地访问它,所以我知道它是有效的

我想做的是列出给定路径中所有文件的名称。。目前,我正在与以下人员合作:

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