【发布时间】:2019-11-14 10:56:09
【问题描述】:
我有一个 scala 库,它(简单地说)接收一个函数,将它应用到一个 RDD 并返回另一个 RDD
def runFunction(rdd: RDD, function: Any => Any) = {
....
val res = rdd.map(function)
...
}
在 scala 中的用法是
import mylibrary.runFunction
runFunction(myRdd, myScalaFun)
这个库被打包在一个 jar 中,我现在也想在 python 中使用它。我想做的是在 Python 中加载这个库并将一个 Python 函数传递给它。 Python 中的用法是:
spark._jvm.mylibrary.runFunction(myPythonRdd, myPythonFun)
这将允许我使用 python 函数以及 Scala 函数,而无需将整个库移植到 python。这是否可以通过 Spark 在 Python 和 JVM 之间来回切换的能力来实现?
【问题讨论】:
-
在我看来,这一切很快就会变得难以维护......如果你不只是因为需要/喜欢 python 生态系统(对于 dataviz,ml ......)而使用 scala,我建议你看看Netflix's polynote,它允许您将两种语言无缝混合到一个笔记本中,并提供良好的 Spark 支持。
标签: apache-spark pyspark rdd py4j