对于在DataFrame上的数据处理,SparkSql支持两种:一类是Sql;另一类是DataFrame开发算子
一、Sql语句
对于任意的DataFrame,都可以使用createTempView(生命周期仅限于SparkSession)或createGlobalTempView(可以跨SparkSession)创建临时表,之后在临时表上用sql语句进行灵活地增删改查
eg:
import org.apache.spark.sql.DataFrame
val seq:Seq[(String,Int)] =Seq(("nie",16),("zhu",18),("bing",20))
//把列表转换为DataFrame
val dfseq:DataFrame = seq.toDF("name","age")
//使用createTempView创建临时表
dfseq.createTempView("t")
//定义查询语句
val query:String = "select * from t"
//使用Spark.sql的API执行查询语句,得到的查询结果被封装成新的DataFrame
val result:DataFrame = spark.sql(query)
result.show
二、DataFrame算子
DataFrame具有双面性;一方面,DataFrame来源于RDD,与RDD具有同源性,RDD支持的大部分算子,DataFrame都支持;另一方面,DataFrame携带的是结构化数据,因此,它必须提供一套与结构化查询同源的计算算子
1、RDD同源类算子
这里暂不做介绍
2、探索类算子(在于帮助开发者初步了解并认识数据),比如数据的模式(schema)、数据的分布
描述 | 算子 |
---|---|
查看数据的模式 | columns、schema、printSchema |
查看数据的模样 | show |
查看数据分布 | describe |
查看数据的执行计划 | explain |
3、清洗类算子
4、转换类算子
5、分析类算子
6、持久化算子
a、read API
–由format指定的文件格式
–零到多个由option构成的加载选项
–由load标记的源文件路径
b、write API
–由format定义的文件格式
–零到多个由option构成的写入选项
–由save指定的存储路径
未完明天再续