更新时间:2023-11-18 20:55:28
你应该匹配一个完整的结构:
You should match a full structure:
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"
)
它应该为您提供以下架构:
which should give you following schema:
result.printSchema
root
|-- 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]]|
+---+-----+---+----------------+