SparkR用什么jar来解析R语法

时间:2016-10-05 16:55:17

标签: sparkr

我是SparkR的新手,所以想问一下SparkR用什么jar来解析R语法

1 个答案:

答案 0 :(得分:0)

我希望我能正确理解你,并且你的假设是R代码将被翻译成Java代码。所以我的简短回答是SparkR不使用jar来解析R语法。

更长的解释:

好吧,SparkR是用R编写的,当你创建sparkR.session()时,将创建一个本地Spark驱动程序JVM,并建立R实例和JVM之间的套接字连接。 SparkR函数或多或少是用Scala编写的Spark SQL方法的包装器,它存在于Spark端,并将使用套接字连接调用。函数参数或整个函数将以自定义格式序列化,发送到JVM,最终Spark执行器将在Spark集群使用的R实例中执行(反序列化的)R代码。

序列化和反序列化代码位于Spark发行版的/R/pkg/R/serialize.R/R/pkg/R/deserialize.R中。 R/pkg/inst/worker/worker.R执行Spark群集中的R代码。

  

可在此处找到包含更多详细信息的旧架构概述:   https://cs.stanford.edu/~matei/papers/2016/sigmod_sparkr.pdf

     
    

我们在SparkR JVM后端支持两种RPC:     方法调用和创建新对象。方法调用是     使用对现有Java对象(或类的名称)的引用来调用     静态方法)和要传递给方法的参数列表。     参数是使用我们的自定义线格式序列化的     然后在JVM端反序列化。然后我们使用Java反射     调用适当的方法。为了创建对象,我们使用了     特殊方法名称init然后类似地调用相应的     构造函数基于提供的参数。最后,我们使用新的R.     class'jobj',指的是后端中存在的Java对象。     这些引用在Java端进行跟踪并自动进行     当它们离开R侧的范围时收集的垃圾。