SparkSQL
SparkSQL是一个处理结构化数据的Spark模型,不像基本的Spark RDD的API,通过SparkSQL提供的接口可以提供更多的信息关于结构化的数据和计算,SparkSQL使用这些额外的信息进行额外的优化,有很多和SparkSQL进行交互的方式,包括:SparkSQL,SQL,the DataFrames API and the Datasets API,不论你使用的是哪种API,在计算的时候使用的都是相同的执行引擎,这种统一性意味着开发者可以更容易的在各种API之间来回切换,在此基础上提供最自然的方式来表示给定的转换。
DataFrames
DataFrame是一个以命名列的方式的一个分布式的数据集。它类似于关系型数据库里面的一张表,或者是R/Python语言里面的DataFrame,但是Spark的这个DataFrame的功能要更强大,DataFrame的数据来源可以是结构化的文件(Json),Hive表(非常重要的数据源),外部的数据库(MySQL),也可以是已经存在的RDD。
DataFrame的API可以使用Scala,Java,Python和R进行编写。
下面这个例子就是读取结构化的json数据来创建DataFrame:
val sc: SparkContext
// An existing SparkContext.
val sqlContext = new org.apache.spark.sql.SQLContext(sc)
val df = sqlContext.read.json("examples/src/main/resources/people.json")
// Displays the content of the DataFrame to stdout
df.show()