一种语言的驱动程序代码和不同语言的执行程序

时间:2018-02-20 08:17:54

标签: apache-spark

如何使用不同的编程语言来定义执行程序的逻辑,而不是我用于驱动程序的逻辑?这有可能吗?

例如:我会在Scala中编写驱动程序,然后调用用Java,Python编写的不同函数来进行数据集的分布式处理。

1 个答案:

答案 0 :(得分:0)

你可以,但只有在某些情况下,并且有一些工作。 应该可以使用SparkSQL / DataSet的代码生成功能来实现其他语言的方法,并通过JNI或其他接口调用它们。

此外,生成的代码是Java代码,因此从技术上讲,您已经在运行Java代码,而不管您使用哪种语言来编写Spark程序。

据我所知,也可以在用Java或Scala编写的Spark程序中使用Python UDF。

使用RDD API,还可以使用其他编程语言调用库 - Scala-Java混合实现起来很简单,非JVM语言需要适当的桥接逻辑。

至少在当前版本的Spark中 - 为了将数据从JVM中取出并重新进入它而需要付出的性能损失,所以我会谨慎地使用它,并且只有当你权衡了性能时才会这样做优点和缺点。