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

Azure Synapse Notebook中筛选特定条件JSON数据的实现求助

Spark数据筛选实现方案

需求说明

已通过Spark成功读取Azure存储账户中的K8s审计日志JSON数据,需筛选满足以下条件的记录:

  • pod 值为 kube-apiserver-78 或 kube-apiserver-79
  • username 值为 system:serviceaccount:xyz 或 system:serviceaccount:poq(注:username 嵌套在 properties.log 的JSON字符串中)

修改后的代码

from pyspark.sql.functions import col, get_json_object

# 读取原始数据
df = spark.read.json('abfss://insights-logs-kube-audit@azogs.dfs.core.windows.net/resourceId=/SUBSCRIPTIONS/5IS/RESOURCEGROUPS/AZURE-DEV/PROVIDERS/MICROSOFT.CONTAINERSERVICE/MANAGEDCLUSTERS/AZURE-DEV/y=2022/m=08/d=09/h=11/m=00/')

# 提取嵌套在log字符串中的username字段,同时筛选符合条件的记录
filtered_df = df.filter(
    col("properties.pod").isin(["kube-apiserver-78", "kube-apiserver-79"]) &
    get_json_object(col("properties.log"), "$.user.username").isin(["system:serviceaccount:xyz", "system:serviceaccount:poq"])
)

# 展示筛选结果
filtered_df.show()

关键说明

  1. 提取嵌套字段:properties.log 是JSON格式的字符串,使用get_json_object函数可直接从中提取user.username的值,无需完整解析整个log结构体,简化操作。
  2. 多条件筛选:用isin方法匹配多个可选值,通过&连接两个筛选条件,确保记录同时满足pod和username的要求。
  3. 性能优化:若数据量较大,建议先筛选pod再处理log字段,减少需要解析的JSON字符串数量,提升运行效率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 14:57:27