2014-04-02 3 views
3

파이썬으로 작성된 몇 가지 분석 코드가 있습니다. 현재 Storm을 사용하여 스트림을 처리하고 있습니다. Storm은 메시지 직렬화를 사용하여 파이썬 코드를 호출 할 수 있으므로 Storm 볼트에서 Java/Scala의 Python 코드를 호출합니다.Akka 액터를 사용하여 파이썬 코드로 메시지를 호출하거나 전달합니다.

나는 배우 모델의 파이썬 구현 인 Pykka을 발견했습니다. Akka 배우로부터 파이썬 코드를 호출 할 수있는 방법이 있는지 궁금합니다. 예를 들어, Akka 배우에게서 Pykka 배우에게 메시지를 전달할 수 있습니까?

답변

3

2 개의 원격 액터 모델 구현에 대한 와이어 프로토콜이 쉽게 연결될 수 있다고 생각하지 않지만 스칼라 코드와 Python 응용 프로그램간에 0MQ을 사용할 수 있습니다. Akka는 message passing over 0MQ을 허용하므로 스칼라 코드는 다른 어떤 배우와 마찬가지로 Python 앱을 처리 할 수 ​​있습니다.하지만 Python 측에서 이것이 의미하는 바가 확실하지는 않습니다.

고려할 가치가있는 또 다른 가능성은 Jython을 사용하여 JVM에서 파이썬 분석 코드를 실행하는 것입니다. Scala 배우가 자이 썬 함수/메소드를 호출 할 수있다. 그러나 파이썬 코드가 C 확장 모듈을 사용한다면 대안을 찾아야한다.

또 다른 가능성은 (또한 C 확장 모듈을 사용하지 않는다고 가정 할 때) 컨버터 py2scala을 시도하는 것입니다. 데이터 분석 코드의 경우 괜찮은 일을 할 수 있습니다. 아마 이것은 당신에게 가장 효과적인 솔루션을 줄 것입니다.

+0

여기에 한 마디 주시겠습니까? http://stackoverflow.com/questions/28665037/concurrency-advanced-python-and-interaction-with-different-objects – user3378649

0

Jep을 사용하여 네이티브 (C) Python 패키지에 대한 전체 액세스를 위해 액터 JVM에 CPython을 임베디드 실행할 수도 있습니다.

슬라이드 5를 참조하십시오. Mixing Python and Java.

필요한 Python 패키지가 스레드 안전하지 않은 경우 원격 Akka 액터를 사용할 수 있습니다. https://github.com/alpinedatalabs/alpine-r/blob/35209af47f896450e4f8f8745a80595d01035ca3/server/src/main/resources/application.conf#L4

ScalaPy을 시도 Scala 부드러운 Python 할 수 있도록 참조 - 또한 Jep 위에 구축.

기술적으로 비슷한 것도 R이 Renjin - GPL을 사용하여 작동해야합니다. 불행히도 임베디드 실행에주의해야합니다.

관련 문제