Spark中将RDD转换成DataFrame的两种方法

总结下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定义在同一函数中

posted @ 2019-05-17 21:45  LestatZ  阅读(2418)  评论(0编辑  收藏  举报