Как вызвать функцию Python из Scala? - PullRequest
0 голосов
/ 30 декабря 2018

Допустим, у меня есть сущность X с некоторыми полями.

У меня есть python function, который ожидает panda dataframes объекта X. Он выполняет некоторые вычисления, обновляет одно из полей X с помощью алгоритма машинного обучения [ sklearn ] и, наконец, возвращаетобновленные кадры данных X.

С другой стороны, у меня есть scala code, который имеет List of entity X.Теперь мне также нужно вычислить значение этого поля X так же, как это делает аналог Python.

Теперь было бы крайне сложно снова смоделировать аналогичные элементы машинного обучения в scala.Самый простой способ, который я вижу, состоит в том, чтобы как-то повторно использовать / вызывать эту функцию python и получать обновленный список X.

Есть ли какой-нибудь способ добиться этого?Любые идеи или предложения о том, как решить эту проблему, будут чрезвычайно полезны.

Ответы [ 2 ]

0 голосов
/ 11 марта 2019

попробуйте этот код val result = "python /fullpath/mypythonprogram.py" !!ProcessLogger (стандартный вывод _, стандартный вывод _)

Потому что "!"просто вернет 0 или 1 (0 означает, что функция выполнена без ошибок, а 1 означает функцию из-за ошибки)

Надеюсь, она работает для вас.спасибо.

0 голосов
/ 31 декабря 2018

Следующий код поможет вам вызвать скрипт Python из самой Scala.

import sys.process._
def callPython(){
     val result = "python /fullpath/mypythonprogram.py" ! 
        ProcessLogger(stdout append _, stderr append _)
println(result)
println("stdout: " + stdout)
println("stderr: " + stderr)
}
...