Моя основная функция определяется следующим образом:
def rowToSHA1(s: Seq[Any]): String = {
//return sha1 of sequence
}
}
Вот определение моего udf:
val toSha = udf[String, Seq[Any]](rowToSHA1)
df.withColumn("shavalue",(toSha(array($"id",$"name",$"description",$"accepted")))
Это работает, когда я передаю только список строк в качестве параметра, ноя получаю сообщение об ошибке, когда есть логическое значение.
org.apache.spark.sql.AnalysisException: cannot resolve 'array(`id`, `name`,
`description`, `accepted`)' due to data type mismatch: input to function
array should all be the same type, but it's [string, string, string,
boolean];;
Я изучаю использование универсальной функции, это хорошая идея?
FIX :преобразовал мой столбец в строку перед применением функции
df.withColumn("shavalue",(toSha(array($"id",$"name",$"description",$"accepted".cast("string)))