You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Databricks中用Python将JSON直接保存到ADLS Gen2的方法

在Databricks中将JSON变量直接保存到ADLS的实现方法

一、结合现有代码的实现方案

你可以直接将json_data序列化为字符串后,通过Azure Data Lake Storage的Python SDK上传,无需写入本地文件。具体步骤如下:

  1. 确保环境已安装azure-storage-file-datalake库(Databricks通常已预装,若缺失可通过%pip install azure-storage-file-datalake安装)
  2. 初始化DataLakeServiceClient(支持Azure AD认证或连接字符串两种方式)
  3. 将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.19 03:50:24