几个人(1,2,3)出于性能原因,已经讨论了在PySpark应用程序中使用Scala UDF。我对相反的东西很感兴趣-在Scala Spark项目中使用python UDF。
我特别想使用sklearn(和MLFlow)构建模型,然后将其有效地应用于Spark流作业中的记录。我知道我也可以在REST API和make calls to that API in the Spark streaming application中的mapPartitions
之后托管python模型,但是为该任务管理并发性并为托管模型设置API并不是我很兴奋的事情
在没有像Py4J这样的自定义开发的情况下,是否有可能?这只是个坏主意吗?
谢谢!
答案 0 :(得分:0)
也许我聚会晚了,但至少我可以为后代提供帮助。实际上,可以通过创建python udf
并将其注册到spark.udf.register("my_python_udf", foo)
来实现。您可以在https://spark.apache.org/docs/latest/api/python/pyspark.sql.html#pyspark.sql.UDFRegistration.register
然后可以使用Python,Scala,Java,R或其他任何语言从sqlContext
调用此函数,因为您是直接访问sqlContext
(注册udf
的地方) 。例如,您将调用
spark.sql("SELECT my_python_udf(...)").show()
PROS-您可以从Scala调用sklearn
模型。
缺点-您必须使用sqlContext
并编写SQL
样式的查询。
我希望这对至少将来的访客有所帮助。