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模式查询一样先注册临时表。