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

Azure Synapse Notebook中Dataframe过滤后display()失效问题

解决Azure Synapse Notebook中过滤后DataFrame无法display的问题

以下是针对你遇到的问题的排查和解决步骤:

1. 修正过滤语句的列引用方式

虽然printSchema()能正常输出,但带空格的列引用可能存在解析优先级问题,换用更稳妥的写法重试:

# 方式1:用col函数指定列名
from pyspark.sql.functions import col
df_InventorySnapshotFilter = df_InventorySnapshot.filter(col("Project Number").isNotNull())

# 方式2:用反引号包裹列名
df_InventorySnapshotFilter = df_InventorySnapshot.filter(`Project Number`.isNotNull())

2. 排查数据异常

过滤后的数据可能存在类型不兼容或损坏行,先通过采样缩小排查范围:

# 尝试加载前10行,避免全量数据报错
df_InventorySnapshotFilter.limit(10).show()

如果show()正常,说明是全量display的资源或数据量问题;如果也报错,进一步检查列数据类型:

# 查看非空行的列类型和样本数据
df_InventorySnapshot.select("Project Number").filter(col("Project Number").isNotNull()).printSchema()
df_InventorySnapshot.select("Project Number").filter(col("Project Number").isNotNull()).distinct().show(20)

若发现混合类型(如同时存在字符串和数字),先统一列类型:

from pyspark.sql.functions import cast
df_fixed = df_InventorySnapshot.withColumn("Project Number", col("Project Number").cast("string"))
df_InventorySnapshotFilter = df_fixed.filter(col("Project Number").isNotNull())

3. 清除缓存并重试

Synapse会话可能存在缓存异常,先清空缓存再重新生成DataFrame:

# 清除过滤后DataFrame的缓存(如果存在)
if df_InventorySnapshotFilter.is_cached:
    df_InventorySnapshotFilter.unpersist()

# 重新执行过滤逻辑
df_InventorySnapshotFilter = df_InventorySnapshot.filter(col("Project Number").isNotNull())

4. 优化资源与分区

如果数据量过大,当前Spark池资源可能不足:

  • 调整Notebook关联的Spark池配置,增加核心数或内存
  • 对DataFrame进行分区优化后再display:
df_partitioned = df_InventorySnapshotFilter.repartition(col("Project Number"))
display(df_partitioned)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 13:35:18