RDD转换得到DataFrame

Posted dqz_nihao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了RDD转换得到DataFrame相关的知识,希望对你有一定的参考价值。

RDD转换得到DataFrame

RDD转换得到DataFrame

RDD转换得到DataFrame有两种模式:利用反射机制推断RDD模式,利用编程方式定义RDD模式。

1.利用反射机制推断RDD模式

利用反射机制推断RDD模式时,首先需要定义一个case class。
因为只有case class 才能被spark隐式转换为DataFrame。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
.map(_.split(",")) “Michael,29” 就转成了Array(“MIchael”,29)
.map(attributes=>Person(attributes(0),attributes(1).trim.toInt)).toDF Array(“MIchael”,29)就转换成了Person(“MIchael”,29)
在这里插入图片描述
注册临时表以供查询
在这里插入图片描述

2.利用编程方式定义RDD模式

使用case class前提是知道字段的名称,但在有些情况下,是不知道字段的名称。这时候就无法提前定义case class。这时候就选哟采用编程方式定义RDD模式。

在这里插入图片描述
这里的“name age”在这里是我们自己写的,通常这里应该是传输进去的。在这里插入图片描述
schemaString.split(" “)的代码执行效果:在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
相当于把"表头”(schema)和"表中的记录"(rowRDD)进行拼装在一起。在这里插入图片描述
下面进行查询和利用反射机制推断RDD模式查询一样先注册临时表。

以上是关于RDD转换得到DataFrame的主要内容,如果未能解决你的问题,请参考以下文章

将 RDD 转换为 DataFrame 时出现 java.lang.***Error

如何使用 toDF() 将自定义 Java 类对象的 RDD 转换为 DataFrame?

将 Dataframe 转换为 RDD 减少了分区

寒假十一

数据框架到RDD这段代码无法工作。

将带有数组的 RDD 转换为 DataFrame