Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala Spark Dataframe Arraytype列_Scala_Apache Spark_Spark Dataframe - Fatal编程技术网

Scala Spark 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,

我想在dataframe上创建一个新列,这是将函数应用于arraytype列的结果

大概是这样的:

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|
+------------------+------+

您想要应用什么样的函数?任何标准的汇总统计信息:最小值、最大值、计数、平均值、方差等。我编写了从数组中查找最大值的代码。类似地,您可以编写逻辑来对数组执行任何操作。