大数据全系列 教程
1869个小节阅读:468k
目录
408考研
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
DataFrame的一个强大之处就是我们可以将它看作是一个关系型数据表。如果想使用SQL风格的语法,需要将DataFrame注册成表然后可以通过在程序中使用sparkSession.sql()
来执行SQL语句查询,结果返回一个新的DataFrame对象。
演示代码:
xxxxxxxxxx
package com.itbaizhan.sql
import org.apache.spark.SparkConf
import org.apache.spark.sql.{Column, DataFrame, SparkSession}
object SSSQlApi {
def main(args: Array[String]): Unit = {
//1.创建配置文件对象
val conf: SparkConf = new SparkConf()
.setMaster("local[*]")
.setAppName("SSSQlApi")
//2.创建SparkSession对象
val spark: SparkSession = SparkSession.builder()
.config(conf).getOrCreate()
//4.读取本地csv文件,返回DataFrame对象
val df: DataFrame = spark.read.format("csv")
//第一行为列名
.option("header", true)
//设置字段之间的分隔符,默认是“,”
.option("delimiter", ",")
//未设置前各个字段都是String类型,设置后匹配对应的类型
.option("inferSchema","true")
.option("encoding", "utf-8")
.load("data/sql/score.csv")
//5.将df注册为一个临时视图(表),只能在当前的SparkSession对象中使用
df.createTempView("tb_score")
//再次注册同名的视图,抛出异常TempTableAlreadyExistsException
//Temporary view 'tb_score' already exists
//df.createTempView("tb_score")
//7.注册或替换临时视图 不存在则注册,存在则替换
df.createOrReplaceTempView("tb_score")
//8.注册全局的临时视图
//df.createGlobalTempView("tb_score2")
df.createOrReplaceGlobalTempView("tb_score2")
//6.执行查询操作
//spark.sql("select id,name,score from tb_score").show()
spark.sql(
"""
|select id,name,score
|from tb_score
|""".stripMargin).show()
//9.查询操作
spark.sql(
"""
|select project,count(*) as cnt
|from tb_score
|group by project
|""".stripMargin).show()
//10.查询操作,全局的视图。需要在表名前带上global_temp.
spark.sql(
"""
|select project,count(id) as cnt
|from global_temp.tb_score2
|group by project
|""".stripMargin).show()
//3.关闭spark
spark.stop()
}
}