Spark 2.0介绍:SparkSession创建和使用相关API

来源:互联网 发布:淘宝直通车测图教程 编辑:程序博客网 时间:2024/06/14 12:47

SparkSession —— Spark的一个全新的切入点

在Spark的早期版本,SparkContext是进入Spark的切入点。我们都知道RDD是Spark中重要的API,然而它的创建和操作得使用SparkContext提供的API;对于RDD之外的其他东西,我们需要使用其他的Context。比如对于流处理来说,我们得使用StreamingContext;对于SQL得使用SQLContext;而对于Hive得使用HiveContext。然而Dataset和DataFrame提供的API逐渐成为新的标准API,我们需要一个切入点来构建它们,所以在Spark 2.0中我们引入一个新的切入点(Entry Point):SparkSession。

SparkSession实质上是SQLContext和HiveContext的组合(未来可能还会加上StreamingContext),所以在SQLContext和HiveContext上可用的API在SparkSession上同样是可以使用的。SparkSession内部封装了SparkContext,所以计算实际上是由SparkContext完成的。

创建SparkSession

SparkSession的设计遵循了工厂设计模式(Factory Design Pattern),下面代码片段介绍如何创建SparkSession:


val sparkSession = SparkSession.builder.      master("local")      .appName("SparkSession Example")      .getOrCreate()

上面代码类似于创建一个SparkContext,master设置为local,然后创建一个SQLContext封装它。如果你想创建HiveContext,可以使用下面的方法来创建SparkSession,以使得它支持Hive:


val sparkSession = SparkSession.builder.      master("local")      .appName("SparkSession Example")      .enableHiveSupport()      .getOrCreate()

enableHiveSupport函数的调用使得SparkSession支持Hive,类似于HiveContext。

使用SparkSession读取数据

创建完SparkSession之后,我们就可以使用它来读取数据,下面代码片段是使用SparkSession来csv文件中读取数据:


val df = sparkSession.read.option("header", "true").      csv("src/main/resources/sales.csv")

上面的代码非常像使用SQLContext来读取数据,我们现在可以使用SparkSession来替代之前使用SQLContext编写的代码。下面是完整的代码片段:


import org.apache.spark.sql.SparkSession/**  * SparkSession Example  */object SparkSessionExample {    def main(args: Array[String]) {        val sparkSession = SparkSession.builder.            master("local")            .appName("SparkSession Example")            .getOrCreate()        val df = sparkSession.read.option("header", "true")            .csv("src/main/reaources/sales.csv")        df.show()    }}

Spark 2.0现在还支持SQLContext和HiveContext吗?

SQLContext和HiveContext相关的API在Spark 2.0还是可以使用的。不过既然有SparkSession了,所以大家还是尽量在Spark 2.0中使用SparkSession。

0 0
原创粉丝点击