gpt4 book ai didi

apache-spark - scala和python之间的API兼容性?

转载 作者:行者123 更新时间:2023-12-04 04:01:51 26 4
gpt4 key购买 nike

我已经阅读了十几页文档,似乎:

  • 我可以跳过学习 scala 部分
  • API 完全在 python 中实现(我不需要学习 scala 任何东西)
  • 交互模式与 scala shell 一样完整和快速,故障排除同样容易
  • 仍然会导入像 numpy 这样的 python 模块(没有残缺的 python 环境)

  • 是否存在无法实现的空缺区域?

    最佳答案

    在最近的 Spark 版本 (1.0+) 中,我们已经实现了下面列出的所有缺少的 PySpark 功能。仍然缺少一些新功能,例如 GraphX 的 Python 绑定(bind),但其他 API 已经实现了近乎平价(包括用于 Spark Streaming 的实验性 Python API)。

    我之前的答案转载如下:

    Spark 0.9 的原始答案

    自我最初回答以来的七个月里发生了很多变化(转载在这个答案的底部):

  • Spark 0.7.3 修复了“forking JVMs with large heaps”问题。
  • Spark 0.8.1 添加了对 persist()、sample() 和 sort() 的支持。
  • 即将发布的 Spark 0.9 版本增加了对 custom Python -> Java serializers 的部分支持。 .
  • Spark 0.9 还添加了 Python bindings for MLLib (docs)。
  • 我已经实现了tools to help keep the Java API up-to-date .

  • 从 Spark 0.9 开始,PySpark 中缺少的主要功能是:
  • zip() / zipPartitions .
  • 支持读写非文本输入格式,如 Hadoop SequenceFile (有一个开放的 pull request 用于此)。
  • Support for running on YARN clusters .
  • Cygwin 支持(Pyspark 在 Windows powershell 或 cmd.exe 下运行良好,不过)。
  • Support for job cancellation .

  • 尽管我们进行了许多性能改进,但 Spark 的 Scala 和 Python API 之间仍然存在性能差距。 Spark 用户邮件列表有 an open thread讨论它目前的表现。

    如果您发现 PySpark 中缺少任何功能,请在我们的 JIRA issue tracker 上开新票。 .

    Spark 0.7.2 的原始答案:

    Spark Python Programming Guide有一个缺少 PySpark 功能的列表。从 Spark 0.7.2 开始,PySpark 目前缺少对不同 StorageLevels 的 sample()、sort() 和持久性的支持。它还缺少一些添加到 Scala API 的便捷方法。

    Java API 在发布时与 Scala API 同步,但从那时起添加了许多新的 RDD 方法,但并非所有这些方法都已添加到 Java 包装器类中。 https://groups.google.com/d/msg/spark-developers/TMGvtxYN9Mo/UeFpD17VeAIJ 讨论了如何使 Java API 保持最新。 .在那个帖子中,我提出了一种自动查找缺失功能的技术,因此只需有人花时间添加它们并提交拉取请求即可。

    在性能方面,PySpark 会比 Scala Spark 慢。部分性能差异源于一个奇怪的 JVM 问题,当派生具有大堆的进程时,但是有一个 open pull request那应该解决这个问题。另一个瓶颈来自序列化:目前,PySpark 不要求用户为他们的对象显式注册序列化程序(我们目前使用二进制 cPickle 加上一些批处理优化)。过去,我曾考虑添加对用户可自定义序列化程序的支持,这将允许您指定对象的类型,从而使用更快的专用序列化程序;我希望在某个时候恢复这方面的工作。

    PySpark 是使用常规 cPython 解释器实现的,因此像 numpy 这样的库应该可以正常工作(如果 PySpark 是用 Jython 编写的,情况就不会如此)。

    PySpark 很容易上手;简单 downloading a pre-built Spark package并运行 pyspark解释器应该足以在您的个人计算机上对其进行测试,并让您评估其交互功能。如果你喜欢使用 IPython,可以使用 IPYTHON=1 ./pyspark在你的 shell 中使用 IPython shell 启动 Pyspark。

    关于apache-spark - scala和python之间的API兼容性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17236936/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com