2017-10-19 237 views
1

我想知道我們是否可以在運行時將Scala中定義的方法轉換爲Python中的方法。我正在學習Apache Spark Scala API作爲我的項目的一部分,並尋找將Scala方法轉換爲Python語言可識別格式的方法。 我的目標是將方法從Scala程序發送到外部Python程序,Python程序應該能夠使用或執行它。是否有可能將Scala方法轉換爲python方法

Scala代碼=> LAMBDA

line => line.split(" ") 

有沒有辦法將其轉換成代碼,Python可以理解的。

絕對上面的例子是非常基本和天真的。但是可以有任何可能的方法(考慮Python對其也有功能支持的通用方法),並且是否有任何已知的方法來實現相同?我們可以使用序列化來實現相同嗎?但Python會理解Scala的序列化對象嗎?

+0

您可以在Python的子流程中運行Scala腳本。除此之外,沒有辦法從python運行Scala代碼。 – puhlen

回答

0

是的,你可以在pyspark內使用Scala函數。

首先,在包含您的代碼的Scala中創建Hive UDF。將它打包成jar文件,在spark執行過程中將jar添加到--jars。然後在註冊UDF後,您將可以使用它。有關更多詳細信息,請訪問以下博客:https://dzone.com/articles/working-with-udfs-in-apache-spark

+0

謝謝。但我並不是在尋找罐子的創造。在運行時,我想將scala方法從運行scala程序轉移到另一個正在運行的python程序。 scala中的方法可以是任何用戶定義的方法(假設可以用python實現)。可能做什麼? – aagora

+0

不可以。如果你有兩個單獨的進程,你應該考慮通過像REST這樣的RPC(遠程過程調用)暴露Scala函數。 – Mariusz

相關問題