我有一些用Python编写的分析代码。目前,我正在使用Storm处理流。由于Storm允许使用消息序列化调用python代码,所以我在Storm螺栓中使用了Java/Scala的调用Python代码。
我找到了皮卡,它是参与者模型的Python实现。我想知道是否有办法从Akka演员那里调用Python代码?例如,是否可以将信息从Akka演员传递给Pykka演员?
发布于 2014-04-02 05:03:40
我怀疑这两个远程参与者模型实现的连接协议是否容易桥接,但您可以在Scala代码和Python之间使用0MQ。Akka允许通过0MQ传递的消息,所以经过一些设置,Scala代码可以像任何其他参与者一样处理Python,不过我不知道这在Python方面意味着什么。
另一个值得考虑的可能性是使用Jython在JVM上运行Python分析代码。您可以让Scala参与者调用Jython函数/方法。但是,如果您的Python代码使用了C扩展模块,那么您就必须找到替代方法。
还有一种可能性(也假设您没有使用C扩展模块)是尝试一下转换器py2scala;对于数据分析代码,它可能做得很好。这大概会给你最有表现力的解决方案。
发布于 2018-01-12 07:05:28
您还可以使用Jep在参与者JVM中运行嵌入式CPython,以便完全访问本机(C) Python包。
参见幻灯片5这里的Python和Java混合。
如果您需要的Python包不是线程安全的,那么可以使用远程Akka参与者。请参阅https://github.com/alpinedatalabs/alpine-r/blob/35209af47f896450e4f8f8745a80595d01035ca3/server/src/main/resources/application.conf#L4
为了使Scala To Python更流畅,尝试ScalaPy --也建立在Jep之上。
从技术上讲,类似的东西也适用于使用Renjin - GPL的R,不幸的是,在运行嵌入式时必须小心。
https://stackoverflow.com/questions/22800795
复制相似问题