package com.bdqn.practise
import org.apache.spark.SparkContext
import org.apache.spark.sql.{DataFrame, SparkSession}
object CreateDataFrame {
def main(args: Array[String]): Unit = {
//TODO 创建一个SparkSession对象
val spark: SparkSession = SparkSession.builder().master("local[*]").appName("test02").getOrCreate()
val sc: SparkContext = spark.sparkContext
//导包,根据上面
import spark.implicits._
//TODO 通过spark.read读取json文件生成DataFrame
val jsontoDF: DataFrame = spark.read.json("file:///D:\\hadoopstudy\\sparkSql_day0812\\src\\data\\people.json")
// spark.read.format(“json”).load(“file:///D:\hadoopstudy\sparkSql_day0812\src\data\people.json”)
// jsontoDF.show()
//TODO 打印schema信息
jsontoDF.printSchema()
//TODO select
jsontoDF.select("name").show()
//TODO
jsontoDF.select(jsontoDF("name"),jsontoDF("age")).show()
jsontoDF.select(jsontoDF("name"),jsontoDF("age")+1).show()
println("*********分割*********")
jsontoDF.select($"name",$"age"+1).show()
jsontoDF.filter($"age">20).show()
//TODO groupBy
jsontoDF.groupBy("age").count().show()
//TODO 把DataFrame注册成一张临时表
jsontoDF.createOrReplaceTempView("people")
val df2: DataFrame = spark.sql("select * from people where age>20")
df2.show()
// spark.newSession().sql(“select * from people where age>20”)
println("*********分割*********")
jsontoDF.createOrReplaceGlobalTempView("p1")
spark.newSession().sql("select * from global_temp.p1 where age>20").show()
spark.stop()
}
}