【发布时间】:2023-04-02 10:10:01
【问题描述】:
我有一个具有以下架构的数据框 -
|-- ID: string (nullable = true)
|-- VALUES: array (nullable = true)
| |-- element: struct (containsNull = true)
| | |-- _v1: string (nullable = true)
| | |-- _v2: string (nullable = true)
值就像 -
[["ABC","a"],["PQR","c"],["XYZ","b"],["TUV","d"]]
[["PQR","g"]]
[["TUV","f"],["ABC","e"]]
我必须根据 _v1 的值从这个数组中选择一个结构。这些值中有一个层次结构,例如 -
“ABC”->“XYZ”->“PQR”->“TUV”
现在,如果存在“TUV”,我们将选择_v1 中带有“TUV”的行。否则我们将检查“PQR”。如果存在“PQR”,则取其所在的行。否则检查“XYZ”等等。
结果 df 应该看起来像 - (现在将是 StructType,而不是 Array[Struct])
["TUV","d"]
["PQR","g"]
["TUV","f"]
有人可以指导我如何通过创建 udf 来解决这个问题吗? 提前致谢。
【问题讨论】:
-
订单
"ABC" -> "XYZ" -> "PQR" -> "TUV"在列表中吗? -
这不在列表中。我只需要遵循这个命令。检查“TUV”,如果它存在 - 接受它。否则检查“PQR”,如果它存在 - 接受它。否则检查“XYZ”等等。但它可以放在一个列表中。
标签: scala apache-spark spark-dataframe user-defined-functions