用于合并的 Spark 结构类型

2023-12-31

我使用 Spark 2.0.1 Scala 2.11

如何使用提供默认值coalesce对于一个列来说StructType?

Say ...

val ss = new StructType().add("x", IntegerType).add("y", IntegerType)

val s = new StructType()
    .add("a", IntegerType)
    .add("b", ss)

val d = Seq( Row(1, Row(1,2)), Row(2, Row(2,3)), Row(2, null) ) 

val rd = sc.parallelize(d)
val df = spark.createDataFrame(rd, s)

Now, df.select($"b").show结果是

+-----+
| b   |
+-----+
|[1,2]|
|[2,3]|
| null|
+-----+

我的问题是如何提供默认值(比如[0,0]) using coalesce?


您可以使用struct函数,传递两个lit(0)命名的值与您已有的结构的名称相匹配:

df.select(coalesce($"b", struct(lit(0).as("x"), lit(0).as("y"))))
  .show()

// +---------------------------------------+
// |coalesce(b, struct(0 AS `x`, 0 AS `y`))|
// +---------------------------------------+
// |                                  [1,2]|
// |                                  [2,3]|
// |                                  [0,0]|
// +---------------------------------------+
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用于合并的 Spark 结构类型 的相关文章

随机推荐