Spark DataFrame提取结构体列字段并重命名报错问题
解决PySpark结构体字段重命名报错问题
你的代码报错是因为直接在select的字符串参数后使用as不符合PySpark语法,PySpark中需要用正确的方式引用结构体字段并重命名,以下是两种可行的写法:
方法1:使用col()函数配合alias()
通过col()函数明确引用结构体中的嵌套字段,再用alias()指定新列名:
from pyspark.sql.functions import col # 注意:原DataFrame中是user列,你代码里写的user_group需要对应实际列名 df2 = df.select( "number", "name", col("owner.display_value").alias("owner_display_value"), col("support.display_value").alias("support_display_value"), "user", "business_unit" )
方法2:使用selectExpr()执行SQL风格表达式
selectExpr()支持直接写SQL格式的字段重命名语句,更贴近你原本的写法:
df2 = df.selectExpr( "number", "name", "owner.display_value as owner_display_value", "support.display_value as support_display_value", "user", "business_unit" )
另外注意:原查询中你选取的是user列,但代码里误写为user_group,需要对应实际列名,避免出现列不存在的错误。
内容的提问来源于stack exchange,提问作者Roho
相关产品推荐
相关产品推荐

