疯狂Spark之DataFrame创建方式详解一(九)
发布网友
我来回答
共1个回答
热心网友
创建DataFrame的几种方式:
1、读取json格式的文件创建DataFrame:
注意:
json文件中的json数据不能嵌套json格式数据。
DataFrame是一个一个Row类型的RDD,df.rdd()/df.javaRdd()。
可以两种方式读取json格式的文件。
df.show()默认显示前20行数据。
DataFrame原生API可以操作DataFrame(不方便)。
注册成临时表时,表中的列默认按ascii顺序显示列。
代码演示:
在项目中新建一个目录用于存储sparksql文件,在文件中编写一个json文件。
新建一个scala文件,编写代码读取json文件。
需求:读取json文件中的数据信息并显示表结构信息。
运行结果:sparksql能够根据条件查询json文件中的数据(类似sql语句)。
注册临时表。
运行结果:查询表中数据。
2、通过json格式的RDD创建DataFrame:
需求:建立两个json格式的RDD,将RDD注册成临时表,利用连接查询查询出表中学生姓名、年龄、成绩等信息。
运行效果:展示查询结果。
3、非json格式的RDD创建DataFrame通过反射的方式将非json格式的RDD转换成DataFrame(不建议使用):
注意:
RDD转成DataFrame后会根据映射将字段按Assci码排序
将DataFrame转换成RDD时获取字段两种方式:一种是df.getInt(0)下标获取(不推荐使用),另一种是df.getAs("列名")获取(推荐使用)
代码演示:
在项目的sparksql目录中新建一个person.txt文件,在文件中编写如下内容。
编写代码。
运行结果:展示RDD转换成DataFrame过程。
RDD转换成DataFrame。
DataFrame转换成RDD。
4、动态创建Schema将非json格式的RDD转换成DataFrame:
运行结果:展示转换过程和结果。