在老的版本中,SparkSQL提供两种SQL查询起始点,一个叫SQLContext,用于Spark自己提供的SQL查询,一个叫HiveContext,用于连接Hive的查询,SparkSession是Spark最新的SQL查询起始点,实质上是SQLContext和HiveContext的组合,所以在SQLContext和HiveContext上可用的API在SparkSession上同样是可以使用的。SparkSession内部封装了sparkContext,所以计算实际上是由sparkContext完成的。
SparkSession的三种创建方式
添加依赖
<dependency>
<groupId>org.apache.spark</groupId>
<artifactId>spark-sql_2.11</artifactId>
<version>${spark.version}</version>
</dependency>
/**
* 创建SparkSession
* builder用于创建一个SparkSession。
* appName设置App的名字
* master设置运行模式(集群模式不用设置)
* enableHiveSupport 开启hive操作
* getOrCreate 进行创建
*/
val sparks1=SparkSession.builder().appName("SparkSQLDemo").master("local").getOrCreate()
//-----------------------------------------------------------------------
val conf = new SparkConf().setAppName("SparkSQLDemo").setMaster("local")
val sparks2 = SparkSession.builder().config(conf).getOrCreate()
//-----------------------------------------------------------------------
val sparkh = SparkSession.builder().appName("SparkSQLDemo").master("local") .enableHiveSupport().getOrCreate()
RDD转换为DataFrame
1.直接手动确定