大数据全系列 教程
1869个小节阅读:467k
目录
408考研
JAVA全系列 教程
面向对象的程序设计语言
Python全系列 教程
Python3.x版本,未来主流的版本
人工智能 教程
顺势而为,AI创新未来
大厂算法 教程
算法,程序员自我提升必经之路
C++ 教程
一门通用计算机编程语言
微服务 教程
目前业界流行的框架组合
web前端全系列 教程
通向WEB技术世界的钥匙
大数据全系列 教程
站在云端操控万千数据
AIGC全能工具班
A A
White Night
DataFrame支持两种风格进行编程,分别是: DSL风格, SQL风格.
DSL语法风格
DSL称之为:领域特定语言。就是指DataFrame的特有API
DSL风格意思就是以调用API的方式来处理Data
比如:df.where().limit()
SQL语法风格
SQL风格就是使用SQL语句处理DataFrame的数据
比如:sparkSession.sql(“SELECT * FROM tb_xxx)
演示代码:
xxxxxxxxxx
package com.itbaizhan.sql
import org.apache.spark.SparkConf
import org.apache.spark.sql.{Column, DataFrame, RelationalGroupedDataset, SaveMode, SparkSession}
object SSDslApi {
def main(args: Array[String]): Unit = {
//1.创建配置文件对象
val conf: SparkConf = new SparkConf()
.setMaster("local[*]")
.setAppName("SSDslApi")
//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")
/*df.printSchema()
df.show()*/
//5.获取指定的列
//df.select("id","name","score").show(5)
import spark.implicits._
println("-----------获取指定的列--------------")
//涉及到运算的时候,每列都必须使用$,或者采用单引号+字段
df.select($"id",$"score"+1).show(5)
df.select('id,'score+1).show(5)
//6.获取列的Column对象
val idColumn: Column = df("id")
val scoreColumn: Column = df("score")
df.select(idColumn,scoreColumn).show(5)
//7.filter过滤数据
println("-----------filter过滤数据--------------")
df.filter("score<90").show()
df.filter(df("score")<90).show()
df.filter($"score"<90).show()
//8.where过滤数据
println("-----------where过滤数据--------------")
df.where("score<85").show()
df.where(df("score")<85).show()
df.where($"score"<85)
//9.分组聚合 groupBy
//返回RelationalGroupedDataset类对象
//后续通常会和聚合函数一起使用:max(),min(),sum(),avg(),count(),
// 然后返回DataFrame对象
println("-----------groupBy--------------")
val groupData = df.groupBy("project")
val dataFrame: DataFrame = groupData.count()
dataFrame.show()
groupData.max("score").show()
//3.关闭spark
spark.stop()
}
}
实时效果反馈
1. 以下选项中哪个不是DSL语法风格的代码?
A df.select("id","score").show()
B df.filter("score < 90").show()
C sparkSession.sql(“SELECT * FROM tb_xxx)
D df.where("score < 90").show()
答案:
1=>C。