|
Spark SQL是Spark生态系统中用于查询分析的组件。那么,为什么会有Spark SQL的出现呢? 关系数据库已经流行多年,最早是由图灵奖得主、有“关系数据库之父”之称的埃德加·弗兰克·科德于1970年提出的。由于具有规范的行和列结构,因此,存储在关系数据库中的数据通常也被称为“结构化数据”,用来查询和操作关系数据库的语言被称为“结构化查询语言”(Structual Query Language,SQL)。由于关系型数据库具有完备的数学理论基础、完善的事务管理机制和高效的查询处理引擎,因此得到了广泛的应用,并从20世纪70年代到21世纪前10年一直占据商业数据库应用的主流位置。目前主流的关系数据库有Oracle、DB2、SQL Server、Sybase、MySQL等。 尽管数据库的事务和查询机制较好地满足了银行、电信等各类商业公司的业务数据管理需求,但是,关系数据库在大数据时代已经不能满足各种新增的用户需求。首先,用户需要从不同数据源执行各种操作,包括结构化和非结构化数据;其次,用户需要执行高级分析,比如机器学习和图像处理,在实际大数据应用中,经常需要融合关系查询和复杂分析算法(比如机器学习或图像处理),但是,一直以来都缺少这样的系统。 Spark SQL的出现,填补了这个鸿沟。首先,Spark SQL可以提供DataFrame API,可以对内部和外部各种数据源执行各种关系操作;其次,可以支持大量的数据源和数据分析算法,组合使用Spark SQL和Spark MLlib,可以融合传统关系数据库的结构化数据管理能力和机器学习算法的数据处理能力,有效满足各种复杂的应用需求。 Spark SQL增加了DataFrame(即带有Schema信息的RDD),使用户可以在Spark SQL中执行SQL语句,数据既可以来自RDD,也可以来自Hive、HDFS、Cassandra等外部数据源,还可以是JSON格式的数据。Spark SQL目前支持Scala、Java、Python等编程语言,支持SQL-92规范。 【出处】林子雨,赖永炫,陶继平.Spark编程基础(Scala版).人民邮电出版社,2018年8月.
|