Spark 2.x管理与开发-Spark SQL-Spark SQL基础 (三)创建DataFrame(2)使用SparkSession

一、什么是SparkSession

Apache Spark 2.0引入了SparkSession,其为用户提供了一个统一的切入点来使用Spark的各项功能,并且允许用户通过它调用DataFrame和Dataset相关API来编写Spark程序。最重要的是,它减少了用户需要了解的一些概念,使得我们可以很容易地与Spark交互。

在2.0版本之前,与Spark交互之前必须先创建SparkConf和SparkContext。然而在Spark 2.0中,我们可以通过SparkSession来实现同样的功能,而不需要显式地创建SparkConf, SparkContext 以及 SQLContext,因为这些对象已经封装在SparkSession中。

 

二、创建过程

1.创建StructType,来定义Schema结构信息

注意,需要:import org.apache.spark.sql.types._

2.读入数据并且切分数据

 

3.将RDD中的数据映射成Row

 

注意,需要:import org.apache.spark.sql.Row

4.创建DataFrames

val df = spark.createDataFrame(rowRDD,myschema)

*******************自己操作****************

1.创建StructType,来定义Schema结构信息

import org.apache.spark.sql.types._

 

scala> val myschema = StructType(List(StructField("empno", DataTypes.IntegerType), StructField("ename", DataTypes.StringType),StructField("job", DataTypes.StringType),StructField("mgr", DataTypes.IntegerType),StructField("hiredate", DataTypes.StringType),StructField("sal", DataTypes.IntegerType),StructField("comm", DataTypes.IntegerType),StructField("deptno", DataTypes.IntegerType)))

2.读入数据并切分数据

scala> var lines=sc.textFile("/usr/local/tmp_files/emp.csv").map(_.split(","))

3.将RDD中的数据映射成Row

scala> import org.apache.spark.sql.Row

scala> val allEmp=lines.map(x=>Row(x(0).toInt,x(1),x(2),x(3).toInt,x(4),x(5).toInt,x(6).toInt,x(7).toInt))

 

4.创建DataFrames-createDataFrame(表数据,表结构)

scala> val df2=spark.createDataFrame(allEmp,myschema)

 

5.查询数据-df2.show

 

博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3