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

Azure Apache Spark DataFrame调用groupby抛出NameError报错问题

报错原因排查
  • 核心问题出在sum()函数的参数写法:直接写TripDistanceMiles时,Python解释器会将其识别为未定义的Python变量,而非DataFrame的列名,因此直接抛出NameError。
  • 额外注意第二段代码的存储路径存在拼写错误:容器名少写了末尾的e,正确容器名是testcontainer4synapse,你写为了testcontainer4synaps,语法问题修复后这个错误会触发文件找不到异常,需要同步修正。
修复方案

Spark DataFrame聚合函数传列名有三种正确写法,任选其一即可:

写法1:列名用字符串包裹(最简单的写法)

%%pyspark
# 修正容器名拼写错误
df = spark.read.load('abfss://testcontainer4synapse@adlsgen2synspsetest.dfs.core.windows.net/NYCTripSmall.parquet', format='parquet')
df = df.select("PassengerCount","TripDistanceMiles").limit(100)
# sum参数传字符串格式的列名
display(df.groupBy("PassengerCount").sum("TripDistanceMiles").limit(100))

写法2:通过df.colName的方式指定列

%%pyspark
df = spark.read.load('abfss://testcontainer4synapse@adlsgen2synspsetest.dfs.core.windows.net/NYCTripSmall.parquet', format='parquet')
df = df.select("PassengerCount","TripDistanceMiles").limit(100)
display(df.groupBy("PassengerCount").sum(df.TripDistanceMiles).limit(100))

写法3:用col函数指定列(适合多列聚合、条件聚合等复杂场景)

%%pyspark
from pyspark.sql.functions import col, sum

df = spark.read.load('abfss://testcontainer4synapse@adlsgen2synspsetest.dfs.core.windows.net/NYCTripSmall.parquet', format='parquet')
df = df.select("PassengerCount","TripDistanceMiles").limit(100)
display(df.groupBy("PassengerCount").agg(sum(col("TripDistanceMiles"))).limit(100))

如果需要优化聚合后的列名可读性,可追加重命名操作,示例:

display(df.groupBy("PassengerCount").sum("TripDistanceMiles").withColumnRenamed("sum(TripDistanceMiles)", "TotalTripDistance").limit(100))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 23:15:08