Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PySpark是否调用了javaapi,而javaapi又反过来调用了apachespark中的scalaapi?_Java_Scala_Api_Apache Spark_Pyspark - Fatal编程技术网

PySpark是否调用了javaapi,而javaapi又反过来调用了apachespark中的scalaapi?

PySpark是否调用了javaapi,而javaapi又反过来调用了apachespark中的scalaapi?,java,scala,api,apache-spark,pyspark,Java,Scala,Api,Apache Spark,Pyspark,我试图了解ApachePypark是如何工作的。视频:Spark Python API-Josh Rosen说Python API是Java API的包装器。它在内部调用Java方法。检查时间戳6.41 本文档说明JavaAPI是ScalaAPI的包装器 我有以下几个问题: 1) 那么这是否意味着对于PySpark中的每个方法,比如map、reduce等,它将在Java中调用相应的方法(比如map),然后Java代码将在Scala中调用类似的方法(map)。实际执行将通过scala代码进行,

我试图了解ApachePypark是如何工作的。视频:Spark Python API-Josh Rosen说Python API是Java API的包装器。它在内部调用Java方法。检查时间戳6.41

本文档说明JavaAPI是ScalaAPI的包装器

我有以下几个问题:

1) 那么这是否意味着对于PySpark中的每个方法,比如map、reduce等,它将在Java中调用相应的方法(比如map),然后Java代码将在Scala中调用类似的方法(map)。实际执行将通过scala代码进行,结果将再次以相反顺序从scala->Java->Python返回

2) 此外,用于“映射”的闭包/函数也是从python->java->scala发送的闭包/函数

3) 类RDD(对象):

self.\u jrdd是否表示特定RDD的Java版本

5) 我在IntelliJ中使用PySpark,并从中加载了源代码

对于任何函数调用,例如“map”函数,是否可以从PySpark一直调试到scalaapi?当我尝试时,我可以看到一些与java相关的函数正在被调用,但之后无法在IntelliJ调试模式下继续

如有任何帮助/解释/建议,将不胜感激

那么这是否意味着对于PySpark中的每个方法,比如map、reduce等,它将在Java中调用相应的方法(比如map),然后Java代码将在Scala中调用类似的方法(map)

是和否。首先,Java和Scala编译为相同的字节码——在执行代码时,两者都在相同的上下文中执行。Python有点不同——RDD的内部机制不同于JVM语言,JVM主要用作传输层,工作代码是Python。对于SQL,没有工作端Python

此外,用于“映射”的闭包/函数也是从python->java->scala发送的闭包/函数

序列化版本通过JVM发送,但执行上下文是Python

self.\u jrdd是否表示特定RDD的Java版本

是的

对于任何函数调用,例如“map”函数,是否可以从PySpark一直调试到scalaapi


谢谢。谢谢。你能详细说明第一个答案吗。我知道Java和ScalaAPI都使用JVM来获得相同的字节码。但我感兴趣的是理解在PySpark中使用map函数时会发生什么。它是否先在Java中调用map函数,然后在Scala中调用map函数?PySpark是否依赖于Scala API?PySpark的意思是围绕javaapi的包装器,javaapi是围绕scalaapi的包装器。
"""
A Resilient Distributed Dataset (RDD), the basic abstraction in Spark.
Represents an immutable, partitioned collection of elements that can be
operated on in parallel.
"""

def __init__(self, jrdd, ctx, jrdd_deserializer=AutoBatchedSerializer(PickleSerializer())):
    self._jrdd = jrdd
    self.is_cached = False
    self.is_checkpointed = False
    self.ctx = ctx
    self._jrdd_deserializer = jrdd_deserializer
    self._id = jrdd.id()
    self.partitioner = None