gpt4 book ai didi

scala - 如何让 spark udf 接受不同数据类型的列表?

转载 作者:行者123 更新时间:2023-12-05 08:08:09 24 4
gpt4 key购买 nike

我的底层函数是这样定义的:

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")))

当我只传递一个字符串列表作为参数时它有效,但当有 bool 值时我得到一个错误。

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];;

我正在探索泛型函数的使用,这是个好主意吗?

修复:在应用函数之前将我的列转换为字符串

df.withColumn("shavalue",(toSha(array($"id",$"name",$"description",$"accepted".cast("string)))

最佳答案

对于这种情况,我所知道的最佳解决方案就是将所有内容都转换为字符串,当您读取/创建 DataFrame 时,请确保所有内容都是字符串或在某个时候将其转换。稍后您可以将 if 转换回任何其他类型。

关于scala - 如何让 spark udf 接受不同数据类型的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52036969/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com