Spark RDD转换为DataFrame

Posted aj117

tags:

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

 
#构造case class,利用反射机制隐式转换
scala> import spark.implicits._
scala> val rdd= sc.textFile("input/textdata.txt")
scala> case class Person(id:Int,name:String)
scala> val df = rdd.map(_.split(",")).map(x=>Person(x(0).toInt,x(1))).toDF
scala> df.show
+---+--------+
| id| name|
+---+--------+
| 1|zhangsan|
| 2| lisi|
| 3| wangwu|
| 4| zhaoliu|
+---+--------+

#通过schema,Row构造dataframe
scala> import org.apache.spark.sql.types._
scala> import org.apache.spark.sql.Row
scala> val structFields = Array(StructField("id",IntegerType,true),StructField("name",StringType,true))
scala> val structType = StructType(structFields) #创建schema结构
scala> val lines= sc.textFile("input/textdata.txt")
scala> val rdd = lines.map(_.split(",")).map(x=>Row(x(0).toInt,x(1))) #创建RDD[Row]
scala> val df = spark.createDataFrame(rdd,structType) #通过RDD[Row],schema构建DataFrame
scala> df.show
+---+--------+
| id| name|
+---+--------+
| 1|zhangsan|
| 2| lisi|
| 3| wangwu|
| 4| zhaoliu|
+---+--------+

  

cat textdata.txt
1,zhangsan
2,lisi
3,wangwu
4,zhaoliu

  

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

如何在 Spark Streaming 中将 RDD 转换为 DataFrame,而不仅仅是 Spark

将包含 BigInt 的 RDD 转换为 Spark Dataframe

Spark RDD转换为DataFrame

Spark RDD转换成DataFrame的两种方式

将 RDD 转换为 DataFrame Spark Streaming 时的 ClassCastException

如何将 spark DataFrame 转换为 RDD mllib LabeledPoints?