zoukankan      html  css  js  c++  java
  • 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()来手动结束流计算进程。
     
  • 相关阅读:
    【HDOJ】2774 Shuffle
    【POJ】2170 Lattice Animals
    【POJ】1084 Square Destroyer
    【POJ】3523 The Morning after Halloween
    【POJ】3134 Power Calculus
    【Latex】如何在Latex中插入伪代码 —— clrscode3e
    【HDOJ】4801 Pocket Cube 的几种解法和优化
    【HDOJ】4080 Stammering Aliens
    【HDOJ】1800 Flying to the Mars
    SQL语法
  • 原文地址:https://www.cnblogs.com/zhang12345/p/12283148.html
Copyright © 2011-2022 走看看