我能够建立到Databricks文件存储DBFS
的连接并访问该文件存储。在
使用Pyspark读、写和转换数据是可能的,但是当我尝试使用本地Python API(如pathlib
或OS
模块)时,我无法通过DBFS文件系统的第一级
我可以用一个神奇的命令:
%fs ls dbfs:\mnt\my_fs\...
哪种方法能很好地工作并列出所有子目录?在
但是如果我做os.listdir('\dbfs\mnt\my_fs\')
,它将返回['mount.err']
作为返回值
我在一个新的集群上进行了测试,结果是一样的
我在Databricks Runtine版本6.1和apachespark 2.4.4上使用Python
有人能给我建议吗。在
连接脚本:
我使用了Databricks CLI库来存储我的凭证,这些凭证是根据Databricks文档格式化的:
def initialise_connection(secrets_func):
configs = secrets_func()
# Check if the mount exists
bMountExists = False
for item in dbutils.fs.ls("/mnt/"):
if str(item.name) == r"WFM/":
bMountExists = True
# drop if exists to refresh credentials
if bMountExists:
dbutils.fs.unmount("/mnt/WFM")
bMountExists = False
# Mount a drive
if not (bMountExists):
dbutils.fs.mount(
source="adl://test.azuredatalakestore.net/WFM",
mount_point="/mnt/WFM",
extra_configs=configs
)
print("Drive mounted")
else:
print("Drive already mounted")
更新答案:使用Azure Data Lake Gen1存储帐户:dbutils具有访问adls Gen1令牌/访问凭据的权限,因此mnt point中的文件列表在std py api调用无法访问creds/spark conf的情况下起作用,您看到的第一个调用是列出文件夹,并且它不会调用adls api
我已经在Databricks运行时版本6.1(包括apachespark2.4.4、scala2.11)中进行了测试
命令作为例外工作,没有任何错误消息。在
更新:内部文件夹的输出。在
希望这有帮助。你能告诉我们吗。在
我们在连接到azuregeneration2存储帐户(没有分层名称空间)时也遇到了相同的问题。在
当将Databricks运行时环境从5.5切换到6.x时,似乎出现了这个错误。但是,我们还不能确定发生这种情况的确切原因。我们假设某些功能可能已被弃用。在
相关问题 更多 >
编程相关推荐