Scala Spark Dataframe Arraytype列
我想在dataframe上创建一个新列,这是将函数应用于arraytype列的结果 大概是这样的:Scala Spark Dataframe Arraytype列,scala,apache-spark,spark-dataframe,Scala,Apache Spark,Spark Dataframe,我想在dataframe上创建一个新列,这是将函数应用于arraytype列的结果 大概是这样的: df = df.withColumn("max_$colname", max(col(colname))) 列的每一行都包含一个值数组 spark.sql.function中的函数似乎仅在列的基础上工作。您可以在数组列上应用用户定义的函数 1.数据帧 +------------------+ | arr| +------------------+ | [1, 2,
df = df.withColumn("max_$colname", max(col(colname)))
列的每一行都包含一个值数组
spark.sql.function中的函数似乎仅在列的基础上工作。您可以在数组列上应用用户定义的函数 1.数据帧
+------------------+
| arr|
+------------------+
| [1, 2, 3, 4, 5]|
|[4, 5, 6, 7, 8, 9]|
+------------------+
2.创建自定义项
import org.apache.spark.sql.functions._
def max(arr: TraversableOnce[Int])=arr.toList.max
val maxUDF=udf(max(_:Traversable[Int]))
3.在查询中应用自定义项
df.withColumn("arrMax",maxUDF(df("arr"))).show
4.结果
+------------------+------+
| arr|arrMax|
+------------------+------+
| [1, 2, 3, 4, 5]| 5|
|[4, 5, 6, 7, 8, 9]| 9|
+------------------+------+
您想要应用什么样的函数?任何标准的汇总统计信息:最小值、最大值、计数、平均值、方差等。我编写了从数组中查找最大值的代码。类似地,您可以编写逻辑来对数组执行任何操作。