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的主要内容,如果未能解决你的问题,请参考以下文章