【问题标题】:entity-like or the semantic difference between spark and pyspark?spark和pyspark之间的实体或语义差异?
【发布时间】:2020-03-02 15:19:34
【问题描述】:

从语义上讲,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 的 2 个陈述是否正确?

【问题讨论】:

  • 你读过PySpark Internals吗?
  • @ernest_k,老实说不,我想我会在堆栈溢出时得到一个简洁准确的答案..

标签: apache-spark pyspark


【解决方案1】:

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 提供的模块(例如 pyspark.sql.*),以及您自己在管道中调用的函数/逻辑(例如 my_rdd.map(my_custom_function),其中 my_custom_function 是您自己用 Python 编写的函数)。 “在 spark 上使用 Python” 在我看来,Spark 是一个 Python 实现,但事实并非如此(或至少不应该如此)。


现在,值得一提的是,PysparkSpark 生态系统的一部分。只是我们没有 Spark with Scala(“ScalaSpark”?)或 Spark with Java 的流行名称,因为我们有 PysparkSparkR.

【讨论】:

  • 这个“scala spark”与“py spark”让我陷入了困境!我在想它“java spark在哪里?”
  • 可能是因为核心 spark 是在 Scala 中实现的。甚至 Java 在其之上也有一个专用的 API(据我所知)。所以 scala 使用主要的东西,Java 当然运行在 JVM 上,scala 代码没有特殊的名称,但不同平台的语言绑定有名称。但是引擎的实现是一样的。
  • still - sparkR,“spark with java”(而不是 javaspark),pyspark - 所有这些都是使用 spark 的方便(这是关键字)方法,而不会因语法绊倒而产生开销.. - 我我对吗? “核心火花在 scala 中实现” - 正因为如此,对吧?没有多少人知道scala,它是一种狭义的语言。但更多人知道python..
  • 无论如何,-我不应该在这个 scala vs python 上花费太多时间,对吧?差异是为了方便,无论哪种语言对我来说更容易编写查询,操作数据集 - 我是对的吗?
  • 我认为这是正确的,尽管我不会说这是为了方便。它更像是一家打印机制造商为 Windows、Linux 等提供驱动程序。你可以说它在某种意义上为 Linux 用户提供了“便利”(因为他们不要求你切换到 Windows——假设打印机的工作是最初实施)。但我想说这是关于平台对其他语言的可用性(这只是一个不同的观点)。是的,开发语言是一个主要的采用障碍:许多 Java 开发人员不会使用 Pandas,因为他们不懂 Python(有点)。
猜你喜欢
  • 2022-01-03
  • 2016-05-14
  • 2021-07-04
  • 2021-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-22
  • 1970-01-01
相关资源
最近更新 更多