Spark Build Custom Column Function, определяемая пользователем функция

Я использую Scala и хочу создать свою собственную функцию DataFrame. Например, я хочу обработать столбец как массив, пройтись по каждому элементу и произвести расчет.

Для начала я пытаюсь реализовать свой собственный метод getMax. Таким образом, столбец x будет иметь значения [3,8,2,5,9], и ожидаемый результат метода будет 9.

Вот как это выглядит в Scala

def getMax(inputArray: Array[Int]): Int = {
   var maxValue = inputArray(0)
   for (i <- 1 until inputArray.length if inputArray(i) > maxValue) {
     maxValue = inputArray(i)
   }
   maxValue
}

Это то, что я до сих пор и получаю эту ошибку

"value length is not a member of org.apache.spark.sql.column", 

и я не знаю, как еще перебрать столбец.

def getMax(col: Column): Column = {
var maxValue = col(0)
for (i <- 1 until col.length if col(i) > maxValue){
    maxValue = col(i)
}
maxValue

}

Как только я смогу реализовать свой собственный метод, я создам функцию столбца

val value_max:org.apache.spark.sql.Column=getMax(df.col(“value”)).as(“value_max”)

И тогда я надеюсь, что смогу использовать это в инструкции SQL, например

val sample = sqlContext.sql("SELECT value_max(x) FROM table")

и ожидаемый результат будет 9, учитывая входной столбец [3,8,2,5,9]

Я слежу за ответом из другой веткиSpark Scala - Как перебирать строки в фрейме данных и добавлять вычисляемые значения в качестве новых столбцов фрейма данных где они создают частный метод для стандартного отклонения. Расчеты, которые я сделаю, будут более сложными, чем это, (например, я буду сравнивать каждый элемент в столбце), иду ли я в правильных направлениях или я должен больше смотреть на пользовательские функции?

Ответы на вопрос(2)

Ваш ответ на вопрос