【发布时间】:2017-05-26 07:48:02
【问题描述】:
我有一个类似下面的架构,它是 collect_list 的输出 groupby
root
|
|-- usedServiceUnits: array (nullable = true)
| |-- element: string (containsNull = true)
|-- accumulators: array (nullable = true)
| |-- element: string (containsNull = true)
其中的值如下所示
+----------------+
|usedServiceUnits|
+----------------+
|[180, 180, 1] |==> this is an array of String
|[180, 180, 1] |
+----------------+
我必须在这个字段上调用def,比如
abc.select("serviceId", "recordId", "usedServiceUnits")
.withColumn("usedServiceUnits1",lit(sumAllValuesinString($"usedServiceUnits"))
def sumAllValuesinString(inString: String): String= {
var sum = 0
val DELIM =','
val a = splitString(inString,DELIM)
for ( x <- a){
sum += Integer.parseInt(x)
}
sum.toString()
}
如何调用此函数并将 sum 作为返回值并设置到我的新列 - usedServiceUnits1。对于更多功能不同的领域,我需要进行类似的计算。所以基本上我正在寻找如何将其传递给我的函数或在哪里更改?
提前感谢您的建议。
【问题讨论】:
标签: arrays scala apache-spark