Python调用Databricks API下载文件遇AttributeError错误求助
问题解决:Databricks文件下载报错
'str' object has no attribute 'absolute_path' 问题详情
执行从Databricks复制数据到本地的Python代码时触发错误,代码及错误信息如下:
原代码
import os from databricks_cli.sdk.api_client import ApiClient from databricks_cli.dbfs.api import DbfsApi from databricks_cli.dbfs.dbfs_path import DbfsPath api_client = ApiClient(host = r"https://azuredatabricks.net/?o=XXXX",token = "121314141") dbfs_source_file_path = 'dbfs:/FileStore/datafilename.csv' local_file_download_path = 'C:/world.txt' dbfs_api = DbfsApi(api_client) dbfs_path = DbfsPath(dbfs_source_file_path) # 下载文件到本地 dbfs_api.get_file(dbfs_source_file_path,local_file_download_path,overwrite = True)
错误信息
AttributeError: 'str' object has no attribute 'absolute_path'
问题原因
你已经创建了DbfsPath实例,但调用get_file时传入的仍是字符串格式的路径。部分版本的databricks-cli要求get_file的第一个参数必须是DbfsPath对象,而非字符串。
解决方案
修改get_file调用,传入已创建的dbfs_path对象代替字符串路径:
# 替换原下载代码行 dbfs_api.get_file(dbfs_path, local_file_download_path, overwrite=True)
完整修正后的代码:
import os from databricks_cli.sdk.api_client import ApiClient from databricks_cli.dbfs.api import DbfsApi from databricks_cli.dbfs.dbfs_path import DbfsPath api_client = ApiClient(host = r"https://azuredatabricks.net/?o=XXXX",token = "121314141") dbfs_source_file_path = 'dbfs:/FileStore/datafilename.csv' local_file_download_path = 'C:/world.txt' dbfs_api = DbfsApi(api_client) dbfs_path = DbfsPath(dbfs_source_file_path) # 修正后的下载调用 dbfs_api.get_file(dbfs_path, local_file_download_path, overwrite = True)
补充说明
官方文档可能存在版本适配偏差,部分新版本的databricks-cli对参数类型做了严格限制,必须传入DbfsPath对象而非字符串路径。
内容的提问来源于stack exchange,提问作者AdityaMani
相关产品推荐
相关产品推荐

