如何将常量值传递给Python UDF?

发布于 2021-01-29 18:04:58

我在想,如果有可能创建一个UDF接收两个参数的Column和另一个变量(ObjectDictionary或任何其他类型),然后做一些操作,并返回结果。

实际上,我尝试执行此操作,但出现了异常。因此,我想知道是否有任何方法可以避免此问题。

df = sqlContext.createDataFrame([("Bonsanto", 20, 2000.00), 
                                 ("Hayek", 60, 3000.00), 
                                 ("Mises", 60, 1000.0)], 
                                ["name", "age", "balance"])

comparatorUDF = udf(lambda c, n: c == n, BooleanType())

df.where(comparatorUDF(col("name"), "Bonsanto")).show()

我得到以下错误:

AnalysisException:u“在给定输入列名称,年龄,余额的情况下,无法解析’Bonsanto’;”

因此,很明显UDF“将” string“ Bonsanto”视为“列名”,实际上我正在尝试将记录值与第二个参数进行比较。

另一方面,我知道可以在where子句中使用一些运算符(但实际上我想知道是否可以使用来实现UDF),如下所示:

df.where(col("name") == "Bonsanto").show()

#+--------+---+-------+
#|    name|age|balance|
#+--------+---+-------+
#|Bonsanto| 20| 2000.0|
#+--------+---+-------+
关注者
0
被浏览
52
1 个回答
知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看