Spark SQL

本文翻译自Spark官网(http://spark.apache.org/docs/latest/sql-programming-guide.html#datasets-and-dataframes)

概览

Spark SQL专门为Spark处理结构化数据而产生的。不像Spark RDD API,Spark SQL提供了很多接口来展示数据结构,以及正在进行的计算。在Spark SQL内部,Spark SQL利用这些多余的信息进行优化。有很多方式可以和Spark SQL进行交互,包括SQL语句以及Dataset API。在使用相同的Engineer来计算结果的时候,和你使用的API或者语言无关。这种统一性,使得开发人员能够自然的在不同API之前切换,以便使用最擅长的方式来实现功能。

SQL

Spark SQL的一个用处就是执行SQL语句。Spark SQL也能从Hive里面读取数据。在另外一种编程语言里面运行SQL语句,结果会以Dataset/DataFrame的形式返回。你也可以使用命令行或者JDBC来运行SQL语句。

Datasets and DataFrames

Dataset是结构化数据集合。Dataset拥有RDD的好处(强类型,能够使用lambda),还拥有Spark SQL优化执行引擎的好处。Dataset可以通过JVM对象生成,然后操作transformation(map, flatMap, filter等等)。Scala和Java都能使用Dataset API,Python不能直接调用Dataset API,但是由于Python的动态特性,Python其实已经具有了Dataset的很多好处。R语言也类似。

DataFrame是把Dataset命名为列的集合。可以把它看做数据库里面的一张表,或者R/Python里的data frame。DataFrame可以由很多种数据生成,如结构化数据文件、Hive里面的表、外部数据库、已经存在的RDD。Scala, Java, Python和 R都能使用DataFrame API。在Scala和Java里面,DataFrame是以行Dataset存在。在Scala API里,DataFrame是Dataset[Row]的别名,而在JAVA API里面,用Dataset 来代表DataFrame。


你可能感兴趣的:(Spark SQL)