Spark Sql:
Spark sql中的基本数据结构为:DataFrame和DataSet。
创建DataFrame对象的方式:
1.使用spark.read._
2.rdd和schema模式组合形成
spark sql的基本编程的流程为:
0.创建DataFrame的Schema模式
0.0:通过StructType创建模式:
StructType(
List(
StructField(列名, 数据类型, 是否可以为空)
StructField(列名, 数据类型, 是否可以为空)
....
)
)
例:val schema = StructType(
List(
StructField("id", IntegerType,true),
StructField("name", StringType,true),
StructField("age", IntegerType,true)
)
)
0.1:通过case class创建模式:
case class 模式名(列名1:类型,列名2:类型,.......)
例:case class Student("stuID":Int, "stuName":String, "stuAge":Int)
1.获取SparkSession对象:
SparkSession是spark2.0中替代sparkContext的方式,SparkSession中包括了SparkContext
例:
val spark = SparkSession.builder().appName("student").master("local")
2.通过SparkSession对象创建数据对应的rdd
例:
val dataRDD = spark.sparkContext.textFile(Filepath)
3.将rdd转换为DataFrame对象或者DataSet对象:
import spark.sparkContext.implict._ //通过隐式转换
3.1将rdd与创建的schema组合:
case class创建模式下的组合转换:
val dataDF = dataRDD.map(x => Student(x(0).toInt,x(1).toString, x(3).toInt)).toDF()
StructType创建模式下的组合转换:
a.先把rdd变为Row行
dataRow = dataRDD.map(x => Row(x(0).toInt, x(1).toString, x(2).toInt))
b.创建DataFrame对象
val dataDF = dataRow.createDataFrame(dataRow, schema)
4.创建DataFrame对象对应的视图:
dataDF.createOrReplaceTempView(表名)
5.在视图上进行sql操作。
val result = spark.sql("select * from 表名")
result.show() //显示结果
Spark sql中的基本数据结构为:DataFrame和DataSet。
创建DataFrame对象的方式:
1.使用spark.read._
2.rdd和schema模式组合形成
spark sql的基本编程的流程为:
0.创建DataFrame的Schema模式
0.0:通过StructType创建模式:
StructType(
List(
StructField(列名, 数据类型, 是否可以为空)
StructField(列名, 数据类型, 是否可以为空)
....
)
)
例:val schema = StructType(
List(
StructField("id", IntegerType,true),
StructField("name", StringType,true),
StructField("age", IntegerType,true)
)
)
0.1:通过case class创建模式:
case class 模式名(列名1:类型,列名2:类型,.......)
例:case class Student("stuID":Int, "stuName":String, "stuAge":Int)
1.获取SparkSession对象:
SparkSession是spark2.0中替代sparkContext的方式,SparkSession中包括了SparkContext
例:
val spark = SparkSession.builder().appName("student").master("local")
2.通过SparkSession对象创建数据对应的rdd
例:
val dataRDD = spark.sparkContext.textFile(Filepath)
3.将rdd转换为DataFrame对象或者DataSet对象:
import spark.sparkContext.implict._ //通过隐式转换
3.1将rdd与创建的schema组合:
case class创建模式下的组合转换:
val dataDF = dataRDD.map(x => Student(x(0).toInt,x(1).toString, x(3).toInt)).toDF()
StructType创建模式下的组合转换:
a.先把rdd变为Row行
dataRow = dataRDD.map(x => Row(x(0).toInt, x(1).toString, x(2).toInt))
b.创建DataFrame对象
val dataDF = dataRow.createDataFrame(dataRow, schema)
4.创建DataFrame对象对应的视图:
dataDF.createOrReplaceTempView(表名)
5.在视图上进行sql操作。
val result = spark.sql("select * from 表名")
result.show() //显示结果
6关闭SparkSession:
spark.close()