在Databricks中用Python将JSON直接保存到ADLS Gen2的方法
在Databricks中将JSON变量直接保存到ADLS的实现方法
一、结合现有代码的实现方案
你可以直接将json_data序列化为字符串后,通过Azure Data Lake Storage的Python SDK上传,无需写入本地文件。具体步骤如下:
- 确保环境已安装
azure-storage-file-datalake库(Databricks通常已预装,若缺失可通过%pip install azure-storage-file-datalake安装) - 初始化
DataLakeServiceClient(支持Azure AD认证或连接字符串两种方式) - 将JSON变量序列化为字符串,直接传递给SDK的上传接口
示例代码:
import requests import json from azure.storage.filedatalake import DataLakeServiceClient from azure.identity import DefaultAzureCredential # 1. 获取目标JSON数据 json_data = requests.get("https://prod-noblehire-api-000001.appspot.com/job?").json() # 2. 将JSON对象序列化为字符串 json_str = json.dumps(json_data, indent=2) # 3. 初始化ADLS服务客户端(此处使用Azure AD认证,也可替换为连接字符串) service_client = DataLakeServiceClient( account_url="https://<你的ADLS账户名>.dfs.core.windows.net", credential=DefaultAzureCredential() ) # 4. 上传字符串到ADLS指定路径 try: file_system_client = service_client.get_file_system_client(file_system="my-file-system") directory_client = file_system_client.get_directory_client("my-directory") file_client = directory_client.create_file("MyJsonFile.json") # 直接传入JSON字符串,跳过本地文件环节 file_client.append_data(data=json_str, offset=0, length=len(json_str)) file_client.flush_data(len(json_str)) print("文件上传成功") except Exception as e: print(f"上传失败: {str(e)}")
二、Databricks环境下的更优实现
在Databricks中,无需依赖Azure Storage SDK,可直接通过内置工具或原生文件操作写入ADLS,代码更简洁高效:
方法1:使用dbutils.fs.put
import requests import json # 获取并序列化JSON数据 json_data = requests.get("https://prod-noblehire-api-000001.appspot.com/job?").json() json_str = json.dumps(json_data, indent=2) # 直接写入ADLS的ABFSS路径(需确保集群已配置ADLS访问权限) dbutils.fs.put( "abfss://my-file-system@<你的ADLS账户名>.dfs.core.windows.net/my-directory/MyJsonFile.json", json_str, overwrite=True )
方法2:使用Python内置open操作ABFSS路径
Databricks支持直接通过open操作ABFSS协议路径,语法和操作本地文件一致:
import requests import json json_data = requests.get("https://prod-noblehire-api-000001.appspot.com/job?").json() json_str = json.dumps(json_data, indent=2) # 直接写入ADLS目标路径 with open("abfss://my-file-system@<你的ADLS账户名>.dfs.core.windows.net/my-directory/MyJsonFile.json", "w") as f: f.write(json_str)
注意:使用上述两种简化方法前,需确保Databricks集群已配置好ADLS的访问权限(如服务主体、托管身份或SAS令牌),且ABFSS路径格式正确。
内容的提问来源于stack exchange,提问作者lyubol
相关产品推荐
相关产品推荐

