1.3 编程语言的选择
大数据处理框架Hadoop、Spark、Flink等,都支持多种类型的编程语言。比如,Hadoop可以支持C、C++、Java、Python等,Spark可以支持Java、Scala、Python和R等。因此,在使用Spark等大数据处理框架进行应用程序开发之前,需要选择一门合适的编程语言。
R是专门为统计和数据分析开发的语言,具有数据建模、统计分析和可视化等功能,简单易上手。Python是目前国内外很多大学里流行的入门语言,学习门槛低,简单易用,开发人员可以使用Python来构建桌面应用程序和Web应用程序,此外,Python在学术界备受欢迎,常被用于科学计算、数据分析和生物信息学等领域。R和Python都是比较流行的数据分析语言,相对而言,数学和统计领域的工作人员更多使用R语言,而计算机领域的工作人员更多使用Python。
Java是目前最热门的编程语言,虽然Java没有R、Python一样好的可视化功能,也不是统计建模的最佳工具,但是,如果需要建立一个庞大的应用系统,那么Java通常会是较为理想的选择。由于Java具有简单、面向对象、分布式、安全、体系结构中立、可移植、高性能、多线程以及动态性等诸多优良特性,因此,被大量应用于企业的大型系统开发中,企业对于Java人才的需求一直比较旺盛。
Scala是一门类似Java的多范式语言,它整合了面向对象编程和函数式编程的最佳特性。本教程采用Scala语言编写Spark应用程序,主要基于以下几个方面的考虑因素:
• Scala具备强大的并发性,支持函数式编程,可以更好地支持分布式系统。在大数据时代,为了提高应用程序的并发性,函数式编程日益受到关注。Scala提供的函数式编程风格,已经吸引了大量的开发者;
• Scala兼容Java,可以与Java互操作。Scala代码文件会被编译成Java的class文件(即在JVM上运行的字节码)。开发者可以从Scala中调用所有的Java类库,也同样可以从Java应用程序中调用Scala的代码。此外,Java是最为热门的编程语言,在企业中有大量的Java开发人员,国内高校大多数也都开设了Java课程。因此,学习Scala可以很好地实现与Java的衔接,让之前在Java方面的学习和工作成果能够得到延续;
• Scala代码简洁优雅。Scala语言非常精炼,实现同样功能的程序,Scala所需的代码量通常比Java少一半或者更多。短小精悍的代码常常意味着更易维护,拥有其他语言编程经验的编程人员很容易读懂Scala代码;
• Scala支持高效的交互式编程。Scala提供了交互式解释器(Read-Eval-Print Loop,REPL),因此,在spark-shell中可进行交互式编程(即表达式计算完成就会输出结果,而不必等到整个程序运行完毕,因此,可即时查看中间结果,并对程序进行修改),这样可以在很大程度上提升开发效率;
• Scala是Spark的开发语言。由于Spark计算框架本身就是采用Scala语言开发的,因此,用Scala语言编写Spark应用程序可以获得最好的执行性能。
需要说明的是,虽然本教材采用Scala语言开发Spark应用程序,但是,读者通过学习本教材熟悉了Spark的运行原理和编程方法以后,就能很容易地通过阅读相关工具书和网络资料,快速学习如何使用Java和Python等语言开发Spark应用程序。