SparkSql
- Spark 引入SparkSql模块,目的是处理结构化数据;
- 该模块添加了新的RDD类型SchemaRDD,SparkSql将SchemaRDD封装成一个DataFrame对象,
DataFrame对象类似于关系数据库中的二维表;
它只提供读操作,不能添加或修改和删除数据。
- SparkSql中的数据基于列存储,每一列数据类型都是同质的,可以避免数据在内存中类型的频繁转换;
- 使用SparkSql模块之前,首先把RDD对象转换成DataFrame对象
再使用SQL语言操作DataFrame对象,
或者使用DataFrame的成员方法操作DataFrame对象
如何将RDD对象转化为DataFrame对象
-
RDD对象实例的toDF方法
RDD对象实例的toDF方法,可以将一个RDD对象转化为DataFrame对象。RDD对象数据集可以从本地磁盘文件获取,也可以从HDFS获取,或者从Array、List获取
注:
此处用到了SparkSql的隐式转换
import sqc.implicits._
res33.toDF("id","name")
若隐式转换不起作用,可以采用
-
JSON格式文件直接转化为DF对象
Spark3.0版本的SparkSql模块的入口点是SparkSession对象,首先需要创建一个SparkSession对象
下面用API方式把JSON文件转化为DF对象,可以直接复制到Shell窗口执行
-
数据库中二维表格直接转化为DF对象
如何在Spark2版本转化DataFrame对象