我有一个数据框,列col的模式如下。
col:array
element:struct
Id:string
Seq:int
Pct:double
Amt:long
当数据不可用时,下面是结构
col:array
element:string
列可以包含数据,也可以为空。
当数据可用时,数据源的格式如下:
{"Id": "123456-1", "Seq": 1, "Pct": 0.1234, "Amt": 3000}
当数据不可用时,我将默认设置如下:
.withColumn("col", when (size($"col") === 0, array(lit("A").cast("string"), lit(0).cast("int"), lit(0.0).cast("double"))).otherwise($"col")
对于我获取的空数据,数据似乎被转换为字符串:
["A", "0", "0.0", "0.0"]
如何获得以下输出:
{"Id": "A", "Seq": 0, "Pct": 0.0}
当数据源中有可用数据时,输出如下:
+----------------------------------------------------+
| Data |
+----------------------------------------------------+
|[[236711-1, 0.14, 1.5, 1], [236711-1, 0.14, 2.0, 2]]|
|[[1061605-1, 0.011, 1.0, 1]] |
+----------------------------------------------------+
当数据不可用时
| Data |
+------+
|[] |
+------+
1条答案
按热度按时间gcxthw6b1#
可以创建一个结构的数组而不是数组: