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

在Synapse Notebook中用PySpark读取Log Analytics表失败,求可行方法

可行的Log Analytics与Synapse PySpark连接方法

方法1:使用托管标识(MSI)认证

若你的Synapse工作区已启用系统/用户分配的托管标识,且该标识被授予Log Analytics工作区的读取者权限,可采用此无凭据硬编码的方式:

df_lg_tb = spark.read.format("com.microsoft.kusto.spark.datasource") \
    .option("kustoCluster", "https://<workspace-id>.ods.opinsights.azure.com") \
    .option("kustoDatabase", "<my-log-analytics-database-name>") \
    .option("kustoQuery", "AzureActivity|take 10") \
    .option("useAadMSI", "true") \
    # 若使用用户分配的MSI,添加以下行并替换为对应客户端ID
    # .option("msiClientId", "<your-msi-client-id>") \
    .load()

方法2:使用服务主体认证

先创建AAD服务主体并为其分配Log Analytics工作区读取权限,再通过服务主体凭据连接:

df_lg_tb = spark.read.format("com.microsoft.kusto.spark.datasource") \
    .option("kustoCluster", "https://<workspace-id>.ods.opinsights.azure.com") \
    .option("kustoDatabase", "<my-log-analytics-database-name>") \
    .option("kustoQuery", "AzureActivity|take 10") \
    .option("kustoAADClientId", "<service-principal-client-id>") \
    .option("kustoAADClientSecret", "<service-principal-client-secret>") \
    .option("kustoAADAuthorityID", "<tenant-id>") \
    .load()

方法3:使用Synapse链接服务

先在Synapse Studio中创建指向Log Analytics工作区的链接服务,之后直接通过链接服务读取数据:

# 直接读取表
df_lg_tb = spark.read \
    .synapsesql("<linked-service-name>.<database-name>.<table-name>") \
    .limit(10)

# 或通过SQL查询读取
df_lg_tb = spark.sql("SELECT * FROM OPENROWSET('Microsoft.LogAnalytics', '<linked-service-name>', '<database-name>', 'AzureActivity') LIMIT 10")

原代码的核心问题

你提供的代码中认证参数配置错误:kustoAADUserId需填写AAD用户的邮箱账号,而非Log Analytics工作区ID;kustoAADPassword是该AAD用户的登录密码,并非工作区密钥,这是连接失败的主要原因。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 06:22:39