您应该匹配一个完整的结构:
val result = df1.selectExpr( "CAST(id AS integer) id", "s1", "CAST(d AS decimal) d", "CAST(s2 AS array<struct<u:integer,v:integer>>) s2")
它应该为您提供以下架构:
result.printSchemaroot |-- id: integer (nullable = true) |-- s1: struct (nullable = true) | |-- x: string (nullable = true) | |-- y: string (nullable = true) |-- d: decimal(10,0) (nullable = true) |-- s2: array (nullable = true) | |-- element: struct (containsNull = true) | | |-- u: integer (nullable = true) | | |-- v: integer (nullable = true)
和数据:
result.show+---+-----+---+----------------+| id| s1| d| s2|+---+-----+---+----------------+| 1|[a,b]| 8|[[1,2], [12,22]]|| 2|[c,d]| 9|[[3,4], [33,44]]|+---+-----+---+----------------+



