• 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|
    +-----+---+


  • 相关阅读:
    preliminary->advanced exam selections
    Maven入门
    Ajax和Json
    过滤器和监听器
    JSTL标签库
    JSP与EL表达式
    dom4j与XML文档操作
    会话管理
    登录之验证码
    WEB之文件下载
  • 原文地址:https://www.cnblogs.com/soyo/p/7647655.html
Copyright © 2020-2023  润新知