6

我有一些用 Python 编写的分析代码。目前我正在使用 Storm 来处理流。因为 Storm 允许使用消息序列化调用 python 代码,所以我在我的 Storm bolts 中从 Java/Scala 调用 Python 代码。

我发现Pykka是演员模型的 Python 实现。我想知道是否有办法从 Akka 演员调用 Python 代码?例如,是否可以将消息从 Akka 演员传递给 Pykka 演员?

4

2 回答 2

4

我怀疑两个远程参与者模型实现的有线协议是否可以轻松桥接,但您可以在 Scala 代码和 Python 应用程序之间使用0MQ 。Akka 允许消息通过 0MQ 传递,因此经过一些设置后,Scala 代码可以像处理任何其他参与者一样处理 Python 应用程序,尽管我不确定这在 Python 方面意味着什么。

另一个值得考虑的可能性是使用Jython在 JVM 上运行 Python 分析代码。您可以让 Scala 演员调用 Jython 函数/方法。但是,如果您的 Python 代码使用 C 扩展模块,您就必须寻找替代方案。

另一种可能性(也假设您没有使用 C 扩展模块)是尝试使用转换器py2scala;对于数据分析代码,它可能做得不错。据推测,这将为您提供最高效的解决方案。

于 2014-04-02T05:03:40.200 回答
0

您还可以使用Jep嵌入CPython在 actor JVM 中运行,以完全访问本机 (C)Python包。

请参阅此处的幻灯片 5 Mixing Python and Java

如果您需要的 Python 包不是线程安全的,那么可以使用远程Akka参与者。见https://github.com/alpinedatalabs/alpine-r/blob/35209af47f896450e4f8f8745a80595d01035ca3/server/src/main/resources/application.conf#L4

为了使ScalatoPython更顺畅 try ScalaPy- 也建立在Jep.

从技术上讲,类似的东西也应该适用于 R 使用Renjin- GPL,不幸的是,必须小心运行嵌入式。

于 2018-01-12T07:05:28.840 回答