我们假设我们有一个Spark DataFrame
df.getClass Class[_ <: org.apache.spark.sql.DataFrame] = class org.apache.spark.sql.DataFrame
使用以下架构
df.printSchema root |-- rawFV: string (nullable = true) |-- tk: array (nullable = true) | |-- element: string (containsNull = true)
鉴于列的每一行tk
都是一个字符串数组,如何编写一个Scala函数来返回每行中的元素数量?
您不必编写自定义函数,因为有一个:
import org.apache.spark.sql.functions.size df.select(size($"tk"))
如果你真的想要你可以写一个udf
:
import org.apache.spark.sql.functions.udf val size_ = udf((xs: Seq[String]) => xs.size)
甚至创建自定义表达式,但实际上没有意义.