Python 数据类型不匹配:无法为Pyspark struct字段强制转换struct
我面临一个例外,我有一个数据框,其中一列hid_标记为struct datatype,我的要求是通过将hid_标记的列附加到结构字段名来更改hid_标记的结构模式,如下所示。我遵循以下步骤并获得数据类型不匹配:无法转换结构异常 你能告诉我我错过了什么吗Python 数据类型不匹配:无法为Pyspark struct字段强制转换struct,python,apache-spark,pyspark,apache-spark-sql,schema,Python,Apache Spark,Pyspark,Apache Spark Sql,Schema,我面临一个例外,我有一个数据框,其中一列hid_标记为struct datatype,我的要求是通过将hid_标记的列附加到结构字段名来更改hid_标记的结构模式,如下所示。我遵循以下步骤并获得数据类型不匹配:无法转换结构异常 你能告诉我我错过了什么吗 df2=df.select(col("hid_tagged").cast(transform_schema(df.schema))) org.apache.spark.sql.AnalysisException:无法解析&3
df2=df.select(col("hid_tagged").cast(transform_schema(df.schema)))
org.apache.spark.sql.AnalysisException:无法解析&39`hid_标签`&39;由于数据类型不匹配:无法强制转换结构&
我能够使用以下udf生成预期的结构模式更改:
架构转换的自定义项:
源结构模式:
预期的结构模式:
试试这个:
df2 = df.select(col("hid_tagged").cast(transform_schema(df.schema)['hid_tagged'].dataType))
transform_schemadf.schema返回整个数据帧的转换模式。在强制转换之前,您需要选择hid_标记列的数据类型
hid_tagged:struct
field_1:long
field_2:long
field_3:string
field_4:array
element:string
field_5:string
field_6:string
field_7:long
field_8:long
field_9:long
field_10:boolean
field_11:string
field_12:long
field_13:long
field_14:long
field_15:long
field_16:long
field_17:long
field_18:long
field_19:long
field_20:long
hid_tagged:struct
hid_tagged_field_1:long
hid_tagged_field_2:long
hid_tagged_field_3:string
hid_tagged_field_4:array
element:string
hid_tagged_field_5:string
hid_tagged_field_6:string
hid_tagged_field_7:long
hid_tagged_field_8:long
hid_tagged_field_9:long
hid_tagged_field_10:boolean
hid_tagged_field_11:string
hid_tagged_field_12:long
hid_tagged_field_13:long
hid_tagged_field_14:long
hid_tagged_field_15:long
hid_tagged_field_16:long
hid_tagged_field_17:long
hid_tagged_field_18:long
hid_tagged_field_19:long
hid_tagged_field_20:long
df2 = df.select(col("hid_tagged").cast(transform_schema(df.schema)['hid_tagged'].dataType))