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

使用azure-kusto-ingest队列摄入Azure ADX时出现KustoBlobError

Azure ADX数据摄入失败:KustoBlobError无法解析临时Blob存储域名

问题概述

本地Windows笔记本通过azure-kusto-ingest库可成功将pandas DataFrame数据摄入Azure ADX,但在Azure Windows计算VM上运行时触发KustoBlobError,错误信息为:

无法解析Blob存储域名'j6v{adx_cluster_name}00.blob.core.windows.net'([Errno 11001] getaddrinfo failed)

已排查情况

  • 使用同一Azure服务主体(SP),两个环境均能正常读取目标ADX表,排除认证授权问题
  • 已对齐VM与本地环境的Python Azure库版本,问题未解决
  • 日志显示ADX分配了两个临时Blob存储资源:0uz{adx_cluster_name}01、j6v{adx_cluster_name}00,VM运行时会随机尝试这两个端点,最终因无法解析后者报错
  • 本地成功请求日志包含请求体,VM失败请求无请求体,每个Blob端点尝试4次(共8次请求)均无响应

摄入配置代码

ingestion_props = IngestionProperties(
    database=dest_database_name,
    table=dest_table_name,
    data_format=DataFormat.CSV,
    report_level=ReportLevel.FailuresAndSuccesses,
    ingestion_mapping_kind=IngestionMappingKind.CSV,
    column_mappings=data_mappings
)

r = kusto_client.ingest_from_dataframe(data, ingestion_properties=ingestion_props)

原因分析

ADX队列摄入机制会自动使用集群管理的临时Blob存储暂存待摄入数据,你看到的xxx{adx_cluster_name}xx.blob.core.windows.net就是这类临时存储的端点。VM上出现域名解析失败,核心原因是VM的网络环境无法访问这些ADX内部Blob端点。

解决方法

1. 检查VM网络出站规则/防火墙配置

  • 确认VM的网络安全组(NSG)出站规则允许访问Azure Blob Storage的公共端点(目标服务标签:Storage)
  • 如果ADX集群启用了私有链接,需确保VM与ADX集群处于同一虚拟网络,或已配置对等连接,同时NSG允许VM访问私有链接端点

2. 验证VM的DNS解析能力

  • 在VM上执行命令测试域名解析:
    nslookup j6v{adx_cluster_name}00.blob.core.windows.net
    
    若解析失败,尝试切换至Azure公共DNS服务器(168.63.129.16)测试,确认是否为本地DNS配置问题
  • 若ADX使用私有链接,需在VM所在虚拟网络中配置privatelink.blob.core.windows.net私有DNS区域,并关联至该VNet,确保能正确解析ADX的内部Blob端点

3. 检查ADX集群临时存储状态

登录Azure门户,进入ADX集群的数据摄入>临时存储页面,确认临时存储资源处于正常状态,无区域或端点变更

4. 临时绕过队列摄入(小批量数据场景)

修改摄入配置,启用flush_immediately=True强制使用直接摄入模式,绕过临时Blob存储验证是否能成功:

ingestion_props = IngestionProperties(
    database=dest_database_name,
    table=dest_table_name,
    data_format=DataFormat.CSV,
    report_level=ReportLevel.FailuresAndSuccesses,
    ingestion_mapping_kind=IngestionMappingKind.CSV,
    column_mappings=data_mappings,
    flush_immediately=True  # 启用直接摄入,跳过队列与临时Blob
)

r = kusto_client.ingest_from_dataframe(data, ingestion_properties=ingestion_props)
r.wait_for_completion()

注意:直接摄入仅适合小批量数据,大规模数据摄入仍需优先解决网络域名解析问题

内容的提问来源于stack exchange,提问作者BioData41

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 17:53:13