11

几个人(1、2、3 讨论了在PySpark应用程序中使用 Scala UDF,通常是出于性能原因。我对相反的情况感兴趣 - 在 Scala Spark 项目中使用 python UDF。

我对使用 sklearn (和MLFlow)构建模型特别感兴趣,然后将其有效地应用于 Spark 流作业中的记录。我知道我还可以在 REST API 后面托管 python 模型,并在 Spark 流应用程序中调用该 APImapPartitions,但是管理该任务的并发性并为托管模型设置 API 并不是我非常兴奋的事情.

如果没有像 Py4J 这样的太多自定义开发,这可能吗?这只是一个坏主意吗?

谢谢!

4

1 回答 1

1

也许我迟到了,但至少我可以为后代提供帮助。这实际上可以通过创建您的python udf并将其注册到spark.udf.register("my_python_udf", foo). 您可以在此处查看文档https://spark.apache.org/docs/latest/api/python/pyspark.sql.html#pyspark.sql.UDFRegistration.register

然后可以sqlContext在 Python、Scala、Java、R 或任何语言中调用此函数,因为您正在sqlContext直接访问(udf注册的地方)。例如,您会调用类似

spark.sql("SELECT my_python_udf(...)").show()

优点 - 你可以sklearn从 Scala 调用你的模型。

缺点 - 您必须使用sqlContext和编写SQL样式查询。

我希望这会有所帮助,至少对任何未来的访问者都是如此。

于 2019-11-25T14:42:43.730 回答