【问题标题】:Does feature parity exist between Spark and PySparkSpark 和 PySpark 之间是否存在功能奇偶校验
【发布时间】:2015-10-06 22:07:05
【问题描述】:

我听到一个常见的主题,我应该只在 Spark (1.5.1) 上的 Scala 中进行认真的编程。真正的超级用户使用 Scala。据说 Python 非常适合分析,但最终代码应写入 Scala 以完成。我听到的原因有很多:

  1. Spark 是用 Scala 编写的,因此总是比基于它的任何其他语言实现都要快。
  2. 与 Python API 相比,Spark 版本总是更倾向于为 Scala API 提供更多可见和启用的功能。

上面的说法有道理吗?我有点怀疑。

谢谢

【问题讨论】:

  • 我不明白你的问题。很明显,在 Spark 上唯一值得考虑的语言是 Clojure。这不是 Haskell,但我们都必须妥协,不是吗?更不用说除了严肃之外的任何类型的编程都应该被禁止:) 说真的,尽管我投票结束这个问题。 1. 脱离 JVM 需要一些开销。这是否意味着您的程序会变慢?也许。这取决于上下文。 2. 是的,新特性首先出现在 Scala API 中。由于内部限制,有些可能永远不会在 Python 中引入。除此之外,这里没有好的答案。
  • 我不明白你为什么要关闭它。我正在询问 Scala 获得比 PySpark 更多功能的观点。是否有证据表明 Spark 中的 Scala API 有此政策?
  • 证据很简单——Spark源码。这绝对不是一个策略,但 PySpark API 的每个部分都需要围绕 Scala API 的包装器或在现有 Python API 之上的单独实现。关于内部限制。这是一个例子:stackoverflow.com/q/31684842/1560062。为什么投票关闭?因为在我看来,这是接近 Scala vs Python 完全没有意义的讨论。

标签: python scala apache-spark pyspark


【解决方案1】:

无论您是在 Scala、Pyspark 还是 Java 中运行 Spark Dataframe API,它的性能都是一样的。但是,RDD API 在 Scala 中的运行速度比在 Pyspark 上快得多

Databricks 在 Spark 中的一些 recent performance improvements 上有一篇非常好的帖子。

Scala API 肯定会首先获得更多测试和更多新功能,但新功能并非总是仅在 Scala 或 Java 中可用。

就我个人而言,我认为学习足够多的 Scala 所需的努力是值得的 - 您无需成为 Scala 专家即可获得在 Spark 中使用它的好处。

【讨论】:

  • 无论您是在 Scala、Pyspark 中运行 Dataframe API,其性能都相同 - 只有当您不使用 UDF 和 UDT 时才会如此。
  • 没错,你用 Python 编写的任何不调用数据帧 API 的代码都会像普通 Python 一样慢,无论是 UDF + UDT 还是字符串操作等。
  • 这并不意味着它会比 Scala (stackoverflow.com/a/32471016/1560062) 慢,但使用 PySpark 会增加另一层复杂性,这通常隐藏得很好,但在你最不期望的时候它会咬你:)
猜你喜欢
  • 2015-06-29
  • 2012-12-06
  • 2012-07-02
  • 1970-01-01
  • 2014-06-14
  • 1970-01-01
  • 2017-07-19
  • 2011-12-10
  • 2013-06-25
相关资源
最近更新 更多