创建DataFrame的几种方式
1、读取json格式的文件创建DataFrame
注意:
1. json文件中的json数据不能嵌套json格式数据。
2. DataFrame是一个一个Row类型的RDD,df.rdd()/df.javaRdd()。
3. 可以两种方式读取json格式的文件。
4. df.show()默认显示前20行数据。
5. DataFrame原生API可以操作DataFrame(不方便)。
6. 注册成临时表时,表中的列默认按ascii顺序显示列。
代码演示
在项目中新建一个目录用于存储sparksql文件,在文件中编写一个json文件,如下图
新建一个scala文件,编写代码读取json文件
需求:读取json文件中的数据信息并显示表结构信息
package
运行结果
sparksql能够根据条件查询json文件中的数据(类似sql语句)
package
注册临时表
package
运行结果
2、通过json格式的RDD创建DataFrame
代码演示
需求:建立两个json格式的RDD,将RDD注册成临时表,利用连接查询查询出表中学生姓名、年龄、成绩等信息
package
运行效果
3、非json格式的RDD创建DataFrame
通过反射的方式将非json格式的RDD转换成DataFrame(不建议使用)
注意
- 自定义类要可序列化
- 自定义类的访问级别是Public
3. RDD转成DataFrame后会根据映射将字段按Assci码排序
4. 将DataFrame转换成RDD时获取字段两种方式,一种是df.getInt(0)下 标获取(不推荐使用),另一种是df.getAs(“列名”)获取(推荐使用)
代码演示
在项目的sparksql目录中新建一个person.txt文件,在文件中编写如下内容
编写代码
package
运行结果
RDD转换成DataFrame
DataFrame转换成RDD
动态创建Schema将非json格式的RDD转换成DataFrame
代码演示
package
运行结果