本节书摘来自华章出版社《Spark大数据分析:核心概念、技术及实践》一书中的第3章,第3.1节,作者[美] 穆罕默德·古勒(Mohammed Guller),更多章节内容可以访问云栖社区“华章计算机”公众号查看。
3.4 数据源
Spark本质上是一个使用集群节点进行大数据集处理的计算框架。与数据库不同,它并没有存储系统,但是它可以搭配外部存储系统使用。Spark一般都配合能存储大量数据的分布式存储系统使用。
Spark支持多种数据源。Spark应用程序可以使用的数据来源包括HDFS、HBase、Cassandra、Amazon S3,或者其他支持Hadoop的数据源。任何Hadoop支持的数据源都可以被Spark Core使用。Spark上的库Spark SQL还支持更多数据源。第7章将会介绍Spark-SQL。
兼容支持Hadoop的数据源是相当重要的。许多组织都已经在Hadoop上面投入了大量的精力。在HDFS或其他支持Hadoop的数据存储系统上都存储着大量的数据。使用Spark并不需要将这些数据迁移到其他存储系统。而且,将Hadoop MapReduce替换成Spark并不需要另起炉灶,这是比较轻松的。如果现有的Hadoop集群正在执行MapReduce作业,也可以同时在上面运行Spark应用。可以把现有的MapReduce作业转化成Spark作业。或者,也可以保留现有的MapReduce应用程序,不做更改,使用Spark运行新的应用程序。
由于Spark Core原生支持Hadoop兼容的存储系统,因此额外的数据源都能很方便地添加进来。比如,人们已经为Spark编写好了各种数据源的连接器,包括Cassandra、MongoDB、CouchDB和其他流行的数据源。
Spark也支持本地文件系统。Spark应用程序可以读写本地文件系统上的数据。如果数据可以从本地文件读取并在单机上处理,那么没必要使用Spark。尽管如此,Spark的这个特性使得它便于开发应用和调试,并且易学。