关于这场Python 和Scala的较量,你怎么看?

Posted AI全球动态

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于这场Python 和Scala的较量,你怎么看?相关的知识,希望对你有一定的参考价值。

当谈到ApacheSpark框架时,数据科学(网络)社区分为两个阵营:有的认为Scala好用,有的认为Python好用。本文的目的就是比较两者的优缺点,以供大家参考。

ApacheSPark是目前最流行的大数据分析框架(之一)。可以为Scala、Python、Java和R语言提供API支持,但本文只讨论前两种语言。因为Java不支持读写—评估—输出这一循环,R语言普及度又不高。前两种中,认为Scala好用的人表示,用Scala编写ApacheSPark很快。而且Scala作为静态类型的语音,已经被编译收录到了JVM(Java虚拟机)。作者认为,每一种方法都有其优缺点,最终的选择应取决于应用程序的类型。

性能

Scala的运行速度通常比Python快10倍左右。(因为JVM技术支持Scala语言的运行。)相比之下,作为动态类语言的Python,速度明显缓慢。因为在Python中调用ApacheSPark库需要大量的代码处理。所以从性能方面讲,Scala更适合对有限数据库的调用。

此外,Scala基于JVM技术,又根植于Hadoop框架下的HDFS文件系统,所以它同Hadoop框架的交互、兼容非常好。相比之下,Python于Hadoop框架的交互就及其糟糕了。开发人员甚至得使用第三方插件才行(如hadopy)。

学习曲线

这两种语言都是功能性、面向特定对象的语言,它们具有相似的语法构造。与Python相比,Scala可能要复杂一些,因为它的功能更加高级。Python适合于简单的逻辑处理,而Scala更适合于复杂的工作流。但Python也不是一无是处,因为Python语法简单,有着更加标准的程序库。

并发性

Scala有多个标准程序库,而且支持在大数据生态系统中快速集成数据库。它可以使用多个并发基元编写代码,而Python不支持并发或多线程编写代码。不过,Python支持重量级进程分叉。只不过它一次只能有一个线程处于活跃状态。而且每当编写新代码时,都必须重新启动其他进程,这无疑会增加内存的占用。

实用性

Python的特点是简洁、容易上手。而Scala则在框架、库、隐式、宏等方面有着极大的优势。这也是Scala在MapReduce框架中有着优秀表现的原因。由于Scala的API采集一致,因此许多Scala数据框架遵循着相似的数据类型。开发人员只需学习它常用的标准程序库,就可以轻松地掌握其他库。ApacheSPark是用Scala编写的,因此了解Scala也可以帮助您认识并修改ApacheSPark内部的功能。但对于NLP来说,Python则是首选。(因为Scala缺乏用于机器学习或NLP的工具。)此外,Python也是GraphX、GraphFrames和MLLib的不二之选。Python的可视化库是对Pyspark的补充。这是ApacheSPark和Scala都没有的东西。

代码恢复与安全

Scala作为静态类语言,它支持我们查找编译时犯的错误。而Python是动态类语言。也就是说,在每次更改现有代码时,Python语音更容易出错。因此,用Scala重构代码比Python重构更容易。

结语

Python运行速度较慢,但上手容易。Scala是运行最快且上手能力适中的编程语言。通过Scala能帮助你能更加全面的了解ApacheSPark,因为ApacheSPark就是用Scala编写的(但也不是绝对)。要知道,对编程语言的选择取决于项目的特征,我们要根据项目的特征做到灵活变通。Python面向分析,Scala面向工程,但这两种语言都是构建数据科学应用程序的优秀语言。总的来说,Scala更能充分的利用ApacheSPark的特征。

以上是关于关于这场Python 和Scala的较量,你怎么看?的主要内容,如果未能解决你的问题,请参考以下文章

20200213

从MySQL和MongoDB的对比,看SQL与NoSQL的较量

关于Linux下Spark的配置

看互联网大佬们当年的高考,才发现真正的较量是高考之后!

关于自动化测试和手工测试的未来你怎么看?

辛丑春节的这场“压力测试”