代码之家  ›  专栏  ›  技术社区  ›  ERJAN

实体类还是spark和pyspark之间的语义差异?

  •  1
  • ERJAN  · 技术社区  · 5 年前

    从语义上讲,spark是一个框架。

    1) Pyspark只是用scala编写的函数的python类调用者的集合?

    如果我定义自己的函数集,而不是像这样的标准函数:

    def sum(a,b):
       return a+b
    
    def subtract(a,b):
       return a-b
    

    并使用它们而不是常规操作:

    c = a+b
    c = sum(a,b)
    

    这与pyspark内部工作机制的性质相似吗? 对于那些不了解Scala但想马上开始使用spark的人来说,Pyspark基本上是类似的语法?

    2) 如果我在spark上使用python,那么我使用的是pyspark。 关于pyspark的这两个陈述是否正确?

    0 回复  |  直到 5 年前
        1
  •  1
  •   ernest_k Petronella    5 年前

    1) Pyspark只是用scala编写的函数的python类调用者的集合?

    也许这就是你的意思。。。底层引擎是相同的。我想一个更好的类比是 Pyspark是“Spark”,就像httplib和okhttp是http一样 .它为您提供了一个调用相同核心引擎的API。当Spark在JVM上运行时,我们用JVM语言(如Scala或Java)编写的驱动程序直接使用API,但使用Python API编写的程序要通过JVM上运行的Python解释器。不过,这是一个实施问题。
    Pyspark更像是同一实现的不同接口,而不是同一API在不同语言中的另一个实现。当然,驱动程序本身需要在执行过程中运行Python代码(程序中调用的Python函数/代码)。

    2) 如果我在spark上使用Python,那么我使用的是Pyspark。

    如果你为Spark调用Python API,用Python编写驱动程序,那么你就是在做Pyspark pyspark.sql.* ),以及在管道中调用的您自己的函数/逻辑(例如 my_rdd.map(my_custom_function) ,在哪里 my_custom_function 是你自己用Python编写的函数)。 “在spark上使用Python” 在我看来,Spark是一个Python实现,但事实并非如此(或者至少不是故意的)。


    现在,在这一切之后,值得一提的是 Pyspark 是其中的一部分 Spark 生态系统。只是我们没有流行的名字 Spark与Scala (“ScalaSpark”?)或 Spark与Java 正如我们所拥有的 Pyspark SparkR .

    推荐文章