Spark SQL中 RDD 转换到 DataFrame

Posted soyosuyang

tags:

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

1.people.txt
soyo8, 35
小周, 30
小华, 19
soyo,88
2.
/**
* Created by soyo on 17-10-10.
* 利用反射机制推断RDD模式
*/
import org.apache.spark.sql.catalyst.encoders.ExpressionEncoder
import org.apache.spark.sql.{Encoder, SparkSession}
import org.apache.spark.sql.SparkSession
case class Person(name:String,age:Int)
object RDD_To_DataFrame {
val spark=SparkSession.builder().getOrCreate()
import spark.implicits._ //支持把一个RDD隐式转换为一个DataFrame

def main(args: Array[String]): Unit = {
val df =spark.sparkContext.textFile("file:///home/soyo/桌面/spark编程测试数据/people.txt")
.map(_.split(",")).map(x=>Person(x(0),x(1).trim.toInt)).toDF()

df.createOrReplaceTempView("people") //定制people
val personDF=spark.sql("select * from people where age >=30")
personDF.map(x=>"姓名="+x(0)+","+"年龄="+x(1)).show()
//转换为表的形式
personDF.select(personDF("name").as("姓名"),personDF("age").as("年龄")).show()
personDF.rdd.saveAsTextFile("file:///home/soyo/桌面/spark编程测试数据/新数据.txt")
}

}
结果:
+--------------+
|         value|
+--------------+
|姓名=soyo8,年龄=35|
|   姓名=小周,年龄=30|
| 姓名=soyo,年龄=88|
+--------------+

+-----+---+
|   姓名| 年龄|
+-----+---+
|soyo8| 35|
|   小周| 30|
| soyo| 88|
+-----+---+



















































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

11.spark sql之RDD转换DataSet

Spark学习 Spark SQL

如何在火花中将rdd对象转换为数据框

spark-sql将Rdd转换为DataFrame进行操作的两种方法

Spark学习记录:Spark SQL编程

08Spark常用RDD变换