总结下Spark中将RDD转换成DataFrame的两种方法, 代码如下:
- 方法一: 使用
createDataFrame
方法//StructType and convert RDD to DataFrame val schema = StructType( Seq( StructField("name",StringType,true) ,StructField("age",IntegerType,true) ) ) val rowRDD = sparkSession.sparkContext .textFile("/tmp/people.txt",2) .map( x => x.split(",")).map( x => Row(x(0),x(1).trim().toInt)) sparkSession.createDataFrame(rowRDD,schema) } }
- 方法二: 使用
toDF
方法//use case class Person case class Person(name:String,age:Int) //导入隐饰操作,否则RDD无法调用toDF方法 import sparkSession.implicits._ val peopleRDD = sparkSession.sparkContext .textFile("/tmp/people.txt",2) .map( x => x.split(",")).map( x => Person(x(0),x(1).trim().toInt)).toDF()
注意
请不要将case Class
定义在main 方法中与toDF一起使用,或与使用toDF定义在同一函数中