• DataFrame读写Mysql数据以及Spark Streaming相关知识


    DataFrame读写Mysql数据
    import java.util.Properties
    import org.apache.spark.sql.types._
    import org.apache.spark.sql.Row
    
    object exercise{
              def main(args:Array[String]){
                
                    val pRDD = spark.sparkContext.parallelize(Array("3,Mary,F,26","4,Tom,M,23")).map(_.split(" "))
                     //设置的两条信息
                    val schema = StructType(List(StructField("id",IntegerType,true),StructField("name",StringType,true),StructField("gender",StringType,true),StructField("age",IntegerType,true)))
                     //设置模式的信息(表头)
                    val rowRDD = pRDD.map(p=> Row(p(0).toInt,p(1).trim,p(2).trim,p(3).toInt))
                     //创建ROW对象,每一个row对象都是rowRDD中的一行
                     val studentDF = spark.createDataFrame(rowRDD,schema)
                      //建立起Row对象和模式之间的对应关系,把数据和模式对应起来
                      val prop=new Properties()
                      //创建prop变量保存JDBC连接参数
                       prop.put("user","root")
                       prop.put("password","hadoop")
                       prop.put("driver","com.mysql.jdbc.Driver")
                       studentDF.write.mode("append").jdbc("jdbc:mysql://localhost:3306/sparktest", "spark.employee", prop)
                       val jdbcDF = spark.read.format("jdbc").option("url", "jdbc:mysql://localhost:3306/sparktest").option("driver","com.mysql.jdbc.Driver").optio n("dbtable","employee").option("user","root").option("password", "hadoop").load() 
                       jdbcDF.agg("age" -> "max", "age" -> "sum")   
    
    }
    
    
    
    
    }
    

      

     
     
    流计算:
    1.数据分为:静态数据和流数据,静态数据计算模式:批量计算  流数据计算模式:实时计算
    2.基本理念:数据的价值随着时间的流逝而降低
    3.对于一个流计算系统来说,它应达到如下需求:
    * ? 高性能。处理大数据的基本要求,如每秒处理几十万条数据。
    * ? 海量式。支持TB级甚至是PB级的数据规模。
    * ? 实时性。必须保证一个较低的延迟时间,达到秒级别,甚至是毫秒级别。
    * ? 分布式。支持大数据的基本架构,必须能够平滑扩展。
    * ? 易用性。能够快速进行开发和部署。
    * ? 可靠性。能可靠地处理流数据。
    4.流计算处理过程:数据实时采集、数据实时计算和实时查询服务
    Spark Streaming简介
    1.是构建在Spark上的实时计算框架,为spark提供了可扩展、高吞吐、容错的流计算能力
    2.可以整合多种数据来源,经过处理的数据可存储至文件系统、数据库或者仪表盘里
    3.基本原理:将实时输入数据流以时间片(秒级)为单位进行拆分,然后经Spark引擎以类似批处理的方式处理每个时间片数据
    编写Spark Streaming程序的基本步骤是:
     1.通过创建输入DStream来定义输入源
     2.通过对DStream应用转换操作和输出操作来定义流计算。
     3.用streamingContext.start()来开始接收数据和处理流程。
     4.通过streamingContext.awaitTermination()方法来等待处理结束(手动结束或因为错误而结束)。
     5.可以通过streamingContext.stop()来手动结束流计算进程。
     
  • 相关阅读:
    【语义未来】Twine和Scoutlabs揭示的冰山一角
    取舍之间:Keep Simple Keep Useful
    掌握激励组合拳的红色混混博客
    智能语义聚合框架:像人类一样收集和理解知识
    快车道不快的现象与人类误判心理学
    像Last.Fm去战斗,电台式的阅读体验?
    语义的未来【OpenSourceCamp讲稿】
    Spring 中 context:propertyplaceholder @Bean
    ${pageContext.request.contextPath}不能识别的问题
    Spring @Autowired 注解 指定自动装配
  • 原文地址:https://www.cnblogs.com/zhang12345/p/12283148.html
Copyright © 2020-2023  润新知