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.流计算处理过程:数据实时采集、数据实时计算和实时查询服务
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()来手动结束流计算进程。
1.是构建在Spark上的实时计算框架,为spark提供了可扩展、高吞吐、容错的流计算能力
2.可以整合多种数据来源,经过处理的数据可存储至文件系统、数据库或者仪表盘里
3.基本原理:将实时输入数据流以时间片(秒级)为单位进行拆分,然后经Spark引擎以类似批处理的方式处理每个时间片数据
编写Spark Streaming程序的基本步骤是:
1.通过创建输入DStream来定义输入源
2.通过对DStream应用转换操作和输出操作来定义流计算。
3.用streamingContext.start()来开始接收数据和处理流程。
4.通过streamingContext.awaitTermination()方法来等待处理结束(手动结束或因为错误而结束)。
5.可以通过streamingContext.stop()来手动结束流计算进程。