import org.apache.spark.SparkConf
import org.apache.spark.sql.SparkSession
object SparkSqlDemo {
def main(args: Array[String]): Unit = {
val sparkConf = new SparkConf().setAppName("demo").setMaster("local[*]")
val spark = SparkSession.builder().config(sparkConf).getOrCreate()
val sc = spark.sparkContext
sc.setLogLevel("ERROR")
import spark.implicits._
val array = Array(("aa",11),
("bb",22),("cc",33))
val dataRdd = sc.makeRDD(array)
val df = dataRdd.toDF("name","age")
val array2 = Array(("aa",44),
("bb",55),("cc",66))
val dataRdd2 = sc.makeRDD(array2)
val df2 = dataRdd2.toDF("zz","score")
//第一种查询方式 使用sql方式查询数据,习惯这种.....
df.createTempView("people")
val df1 = spark.sql("select name,(age * 100) as AGEE from people")
//df1.show()
// union适用于两个表的列数相同,列名以第一个表的列名为准
df2.union(df1).show()
//第二种查询方式 Untyped Dataset Operations 这种还需要记一下api
// df1.select("name").show()
// df1.select($"name",$"age"+100).alias("a").show()
// df1.filter($"age">23).show()
// df1.groupBy("name").count().show()
// df1.drop("age").show()
//全局表 直到spark应用停止,需要用 global_temp.表名
df.createGlobalTempView("man")
spark.sql("select name as Name,(age + 10) as AGE from global_temp.man").show()
spark.newSession().sql("select name,age from global_temp.man").show()
}
}