我已经阅读了十几页文档,似乎:
我可以跳过学习scala部分
API完全在python中实现(我不需要学习任何东西的scala)
交互模式与scala shell完全一样快,并且故障排除同样容易
像numpy这样的python模块仍然会导入(没有残缺的python environement)
是否存在使得不可能的空缺区域?
在最近的Spark版本(1.0+)中,我们实现了下面列出的所有缺少的PySpark功能.仍然缺少一些新功能,例如GraphX的Python绑定,但其他API已实现接近奇偶校验(包括用于Spark Streaming的实验性Python API).
我之前的答案转载如下:
自我原来的答案(在这个答案的底部再现)后的七个月里发生了很多变化:
从Spark 0.9开始,PySpark的主要缺失功能是:
SequenceFile(对此有一个开放的拉取请求).尽管我们已经进行了许多性能改进,但Spark的Scala和Python API之间仍存在性能差距.Spark用户邮件列表有一个讨论其当前性能的开放线程.
如果您发现PySpark中缺少任何功能,请在我们的JIRA问题跟踪器上打开一张新票.
在星火Python编程指南有缺失PySpark功能列表.从Spark 0.7.2开始,PySpark目前缺少对不同StorageLevels的sample(),sort()和持久性的支持.它还缺少一些添加到Scala API的便捷方法.
Java API在发布时与Scala API同步,但从那时起添加了许多新的RDD方法,并不是所有这些方法都已添加到Java包装器类中.有关如何使Java API保持最新的讨论,请访问https://groups.google.com/d/msg/spark-developers/TMGvtxYN9Mo/UeFpD17VeAIJ.在该主题中,我提出了一种自动查找缺失特征的技术,因此只需要花时间添加它们并提交拉取请求即可.
关于性能,PySpark将比Scala Spark慢.部分性能差异源于在使用大堆分叉进程时出现奇怪的JVM问题,但是有一个开放的pull请求应该解决这个问题.另一个瓶颈来自序列化:现在,PySpark不要求用户为其对象显式注册序列化程序(我们目前使用二进制cPickle加上一些批处理优化).在过去,我考虑添加对用户可自定义的序列化程序的支持,这些序列化程序允许您指定对象的类型,从而使用更快的专用序列化程序; 我希望在某个时候恢复这方面的工作.
PySpark是使用常规的cPython解释器实现的,因此像numpy这样的库应该可以正常工作(如果PySpark是用Jython编写的,那就不是这种情况).
开始使用PySpark非常容易; 只需下载预先构建的Spark软件包并运行pyspark解释器就足以在您的个人计算机上进行测试,并让您评估其交互功能.如果您想使用IPython,可以IPYTHON=1 ./pyspark在shell中使用IPython shell启动Pyspark.
| 归档时间: |
|
| 查看次数: |
3459 次 |
| 最近记录: |