在spark中将自定义对象传递给udf

bzzcjhmw  于 2021-07-13  发布在  Spark
关注(0)|答案(0)|浏览(212)

我有这个自定义项

val IPSet1 = IPSet(Seq("212.222.131.201", "212.222.131.200", "192.0.0.0/16"))
//function and function registration to check if the IP address is in the IP Set
val IPSetContains = udf((IPAddr: String, IPSetObj: IPSet) => IPSetObj.contains(IPv4(IPAddr)))
spark.udf.register("IPSetContains", IPSetContains)
//query to test the function
spark.sql(
  "SELECT * " +
  "FROM IPv4 " +
  s"WHERE IPSetContains(IPAddress, $IPSet1)"
).show()

它给出了一个错误的说法
线程“main”org.apache.spark.sql.catalyst.parser.parseexception中出现异常:外部输入“@”应为{'),','}(第1行,位置73)
将内置数据类型传递给udf似乎可以正常工作,但是使用自定义类作为参数会由于某些原因而产生错误。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题