是否可以在列中添加参数到spark UDF。我知道您可以在Scala中使用curring,但是它并不能像我喜欢的那样工作。
让我们以该功能为例:
def containsWord(word: String, words: Seq[String]): Boolean = {
for (w <- words) if (word.contains(w)) return true
false
}
字符串是我想从列中获取的参数。如果没有第二个参数,我可以使用udf
函数创建UDF并将其列作为参数。如何在UDF调用中添加字符串序列?
任何帮助将不胜感激。
答案 0 :(得分:1)
您实际上不需要在这里粗鲁(尽管想法很相似)。您只需定义一个将序列作为参数并返回udf的函数即可:
imageObj.onload
然后像这样使用它:
def containsWord(words : Seq[String]) = udf((word : String) => words.contains(word))
它给你这个:
sc.parallelize(Seq("a", "b", "c", "d", "e"))
.toDF("A")
.withColumn("B", containsWord(Seq("a", "b", "d"))($"A"))
.show